/*
 * Created by Microsoft VCBU Internal YACC from "asmparse.y"
 */

#line 2 "asmparse.y"

// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
//
// File asmparse.y
//

#include "ilasmpch.h"

#include "grammar_before.cpp"


#line 16 "asmparse.y"

#define UNION 1
typedef union  {
        CorRegTypeAttr classAttr;
        CorMethodAttr methAttr;
        CorFieldAttr fieldAttr;
        CorMethodImpl implAttr;
        CorEventAttr  eventAttr;
        CorPropertyAttr propAttr;
        CorPinvokeMap pinvAttr;
        CorDeclSecurity secAct;
        CorFileFlags fileAttr;
        CorAssemblyFlags asmAttr;
        CorAssemblyFlags asmRefAttr;
        CorTypeAttr exptAttr;
        CorManifestResourceFlags manresAttr;
        double*  float64;
        __int64* int64;
        __int32  int32;
        char*    string;
        BinStr*  binstr;
        Labels*  labels;
        Instr*   instr;         // instruction opcode
        NVPair*  pair;
        pTyParList typarlist;
        mdToken token;
        TypeDefDescr* tdd;
        CustomDescr*  cad;
        unsigned short opcode;
} YYSTYPE;
# define ERROR_ 257 
# define BAD_COMMENT_ 258 
# define BAD_LITERAL_ 259 
# define ID 260 
# define DOTTEDNAME 261 
# define QSTRING 262 
# define SQSTRING 263 
# define INT32 264 
# define INT64 265 
# define FLOAT64 266 
# define HEXBYTE 267 
# define TYPEDEF_T 268 
# define TYPEDEF_M 269 
# define TYPEDEF_F 270 
# define TYPEDEF_TS 271 
# define TYPEDEF_MR 272 
# define TYPEDEF_CA 273 
# define DCOLON 274 
# define ELIPSIS 275 
# define VOID_ 276 
# define BOOL_ 277 
# define CHAR_ 278 
# define UNSIGNED_ 279 
# define INT_ 280 
# define INT8_ 281 
# define INT16_ 282 
# define INT32_ 283 
# define INT64_ 284 
# define FLOAT_ 285 
# define FLOAT32_ 286 
# define FLOAT64_ 287 
# define BYTEARRAY_ 288 
# define UINT_ 289 
# define UINT8_ 290 
# define UINT16_ 291 
# define UINT32_ 292 
# define UINT64_ 293 
# define FLAGS_ 294 
# define CALLCONV_ 295 
# define MDTOKEN_ 296 
# define OBJECT_ 297 
# define STRING_ 298 
# define NULLREF_ 299 
# define DEFAULT_ 300 
# define CDECL_ 301 
# define VARARG_ 302 
# define STDCALL_ 303 
# define THISCALL_ 304 
# define FASTCALL_ 305 
# define CLASS_ 306 
# define TYPEDREF_ 307 
# define UNMANAGED_ 308 
# define FINALLY_ 309 
# define HANDLER_ 310 
# define CATCH_ 311 
# define FILTER_ 312 
# define FAULT_ 313 
# define EXTENDS_ 314 
# define IMPLEMENTS_ 315 
# define TO_ 316 
# define AT_ 317 
# define TLS_ 318 
# define TRUE_ 319 
# define FALSE_ 320 
# define _INTERFACEIMPL 321 
# define VALUE_ 322 
# define VALUETYPE_ 323 
# define NATIVE_ 324 
# define INSTANCE_ 325 
# define SPECIALNAME_ 326 
# define FORWARDER_ 327 
# define STATIC_ 328 
# define PUBLIC_ 329 
# define PRIVATE_ 330 
# define FAMILY_ 331 
# define FINAL_ 332 
# define SYNCHRONIZED_ 333 
# define INTERFACE_ 334 
# define SEALED_ 335 
# define NESTED_ 336 
# define ABSTRACT_ 337 
# define AUTO_ 338 
# define SEQUENTIAL_ 339 
# define EXPLICIT_ 340 
# define ANSI_ 341 
# define UNICODE_ 342 
# define AUTOCHAR_ 343 
# define IMPORT_ 344 
# define ENUM_ 345 
# define VIRTUAL_ 346 
# define NOINLINING_ 347 
# define AGGRESSIVEINLINING_ 348 
# define NOOPTIMIZATION_ 349 
# define UNMANAGEDEXP_ 350 
# define BEFOREFIELDINIT_ 351 
# define STRICT_ 352 
# define RETARGETABLE_ 353 
# define WINDOWSRUNTIME_ 354 
# define NOPLATFORM_ 355 
# define METHOD_ 356 
# define FIELD_ 357 
# define PINNED_ 358 
# define MODREQ_ 359 
# define MODOPT_ 360 
# define SERIALIZABLE_ 361 
# define PROPERTY_ 362 
# define TYPE_ 363 
# define ASSEMBLY_ 364 
# define FAMANDASSEM_ 365 
# define FAMORASSEM_ 366 
# define PRIVATESCOPE_ 367 
# define HIDEBYSIG_ 368 
# define NEWSLOT_ 369 
# define RTSPECIALNAME_ 370 
# define PINVOKEIMPL_ 371 
# define _CTOR 372 
# define _CCTOR 373 
# define LITERAL_ 374 
# define NOTSERIALIZED_ 375 
# define INITONLY_ 376 
# define REQSECOBJ_ 377 
# define CIL_ 378 
# define OPTIL_ 379 
# define MANAGED_ 380 
# define FORWARDREF_ 381 
# define PRESERVESIG_ 382 
# define RUNTIME_ 383 
# define INTERNALCALL_ 384 
# define _IMPORT 385 
# define NOMANGLE_ 386 
# define LASTERR_ 387 
# define WINAPI_ 388 
# define AS_ 389 
# define BESTFIT_ 390 
# define ON_ 391 
# define OFF_ 392 
# define CHARMAPERROR_ 393 
# define INSTR_NONE 394 
# define INSTR_VAR 395 
# define INSTR_I 396 
# define INSTR_I8 397 
# define INSTR_R 398 
# define INSTR_BRTARGET 399 
# define INSTR_METHOD 400 
# define INSTR_FIELD 401 
# define INSTR_TYPE 402 
# define INSTR_STRING 403 
# define INSTR_SIG 404 
# define INSTR_TOK 405 
# define INSTR_SWITCH 406 
# define _CLASS 407 
# define _NAMESPACE 408 
# define _METHOD 409 
# define _FIELD 410 
# define _DATA 411 
# define _THIS 412 
# define _BASE 413 
# define _NESTER 414 
# define _EMITBYTE 415 
# define _TRY 416 
# define _MAXSTACK 417 
# define _LOCALS 418 
# define _ENTRYPOINT 419 
# define _ZEROINIT 420 
# define _EVENT 421 
# define _ADDON 422 
# define _REMOVEON 423 
# define _FIRE 424 
# define _OTHER 425 
# define _PROPERTY 426 
# define _SET 427 
# define _GET 428 
# define _PERMISSION 429 
# define _PERMISSIONSET 430 
# define REQUEST_ 431 
# define DEMAND_ 432 
# define ASSERT_ 433 
# define DENY_ 434 
# define PERMITONLY_ 435 
# define LINKCHECK_ 436 
# define INHERITCHECK_ 437 
# define REQMIN_ 438 
# define REQOPT_ 439 
# define REQREFUSE_ 440 
# define PREJITGRANT_ 441 
# define PREJITDENY_ 442 
# define NONCASDEMAND_ 443 
# define NONCASLINKDEMAND_ 444 
# define NONCASINHERITANCE_ 445 
# define _LINE 446 
# define P_LINE 447 
# define _LANGUAGE 448 
# define _CUSTOM 449 
# define INIT_ 450 
# define _SIZE 451 
# define _PACK 452 
# define _VTABLE 453 
# define _VTFIXUP 454 
# define FROMUNMANAGED_ 455 
# define CALLMOSTDERIVED_ 456 
# define _VTENTRY 457 
# define RETAINAPPDOMAIN_ 458 
# define _FILE 459 
# define NOMETADATA_ 460 
# define _HASH 461 
# define _ASSEMBLY 462 
# define _PUBLICKEY 463 
# define _PUBLICKEYTOKEN 464 
# define ALGORITHM_ 465 
# define _VER 466 
# define _LOCALE 467 
# define EXTERN_ 468 
# define _MRESOURCE 469 
# define _MODULE 470 
# define _EXPORT 471 
# define LEGACY_ 472 
# define LIBRARY_ 473 
# define X86_ 474 
# define IA64_ 475 
# define AMD64_ 476 
# define ARM_ 477 
# define MARSHAL_ 478 
# define CUSTOM_ 479 
# define SYSSTRING_ 480 
# define FIXED_ 481 
# define VARIANT_ 482 
# define CURRENCY_ 483 
# define SYSCHAR_ 484 
# define DECIMAL_ 485 
# define DATE_ 486 
# define BSTR_ 487 
# define TBSTR_ 488 
# define LPSTR_ 489 
# define LPWSTR_ 490 
# define LPTSTR_ 491 
# define OBJECTREF_ 492 
# define IUNKNOWN_ 493 
# define IDISPATCH_ 494 
# define STRUCT_ 495 
# define SAFEARRAY_ 496 
# define BYVALSTR_ 497 
# define LPVOID_ 498 
# define ANY_ 499 
# define ARRAY_ 500 
# define LPSTRUCT_ 501 
# define IIDPARAM_ 502 
# define IN_ 503 
# define OUT_ 504 
# define OPT_ 505 
# define PARAM_ 506 
# define _OVERRIDE 507 
# define WITH_ 508 
# define NULL_ 509 
# define HRESULT_ 510 
# define CARRAY_ 511 
# define USERDEFINED_ 512 
# define RECORD_ 513 
# define FILETIME_ 514 
# define BLOB_ 515 
# define STREAM_ 516 
# define STORAGE_ 517 
# define STREAMED_OBJECT_ 518 
# define STORED_OBJECT_ 519 
# define BLOB_OBJECT_ 520 
# define CF_ 521 
# define CLSID_ 522 
# define VECTOR_ 523 
# define _SUBSYSTEM 524 
# define _CORFLAGS 525 
# define ALIGNMENT_ 526 
# define _IMAGEBASE 527 
# define _STACKRESERVE 528 
# define _TYPEDEF 529 
# define _TEMPLATE 530 
# define _TYPELIST 531 
# define _MSCORLIB 532 
# define P_DEFINE 533 
# define P_UNDEF 534 
# define P_IFDEF 535 
# define P_IFNDEF 536 
# define P_ELSE 537 
# define P_ENDIF 538 
# define P_INCLUDE 539 
#define yyclearin yychar = -1
#define yyerrok yyerrflag = 0
#ifndef YYMAXDEPTH
#define YYMAXDEPTH 150
#endif
YYSTYPE yylval, yyval;
#ifndef YYFARDATA
#define	YYFARDATA	/*nothing*/
#endif
#if ! defined YYSTATIC
#define	YYSTATIC	/*nothing*/
#endif
#if ! defined YYCONST
#define	YYCONST	/*nothing*/
#endif
#ifndef	YYACT
#define	YYACT	yyact
#endif
#ifndef	YYPACT
#define	YYPACT	yypact
#endif
#ifndef	YYPGO
#define	YYPGO	yypgo
#endif
#ifndef	YYR1
#define	YYR1	yyr1
#endif
#ifndef	YYR2
#define	YYR2	yyr2
#endif
#ifndef	YYCHK
#define	YYCHK	yychk
#endif
#ifndef	YYDEF
#define	YYDEF	yydef
#endif
#ifndef	YYV
#define	YYV	yyv
#endif
#ifndef	YYS
#define	YYS	yys
#endif
#ifndef	YYLOCAL
#define	YYLOCAL
#endif
#ifndef YYR_T
#define	YYR_T	int
#endif
typedef	YYR_T	yyr_t;
#ifndef YYEXIND_T
#define	YYEXIND_T	unsigned int
#endif
typedef	YYEXIND_T	yyexind_t;
#ifndef YYOPTTIME
#define	YYOPTTIME	0
#endif
# define YYERRCODE 256

#line 2051 "asmparse.y"


#include "grammar_after.cpp"
YYSTATIC YYCONST short yyexca[] = {
#if !(YYOPTTIME)
-1, 1,
#endif
	0, -1,
	-2, 0,
#if !(YYOPTTIME)
-1, 452,
#endif
	41, 532,
	-2, 308,
#if !(YYOPTTIME)
-1, 621,
#endif
	274, 549,
	47, 549,
	-2, 227,
#if !(YYOPTTIME)
-1, 642,
#endif
	40, 307,
	60, 307,
	-2, 549,
#if !(YYOPTTIME)
-1, 663,
#endif
	41, 532,
	-2, 308,
#if !(YYOPTTIME)
-1, 686,
#endif
	274, 549,
	47, 549,
	-2, 510,
#if !(YYOPTTIME)
-1, 803,
#endif
	123, 232,
	-2, 549,
#if !(YYOPTTIME)
-1, 828,
#endif
	41, 532,
	-2, 308,
#if !(YYOPTTIME)
-1, 953,
#endif
	41, 532,
	-2, 308,
#if !(YYOPTTIME)
-1, 986,
#endif
	41, 532,
	-2, 308,
#if !(YYOPTTIME)
-1, 987,
#endif
	41, 532,
	-2, 308,
#if !(YYOPTTIME)
-1, 1308,
#endif
	41, 532,
	-2, 308,
#if !(YYOPTTIME)
-1, 1309,
#endif
	41, 532,
	-2, 308,
#if !(YYOPTTIME)
-1, 1315,
#endif
	41, 532,
	-2, 308,
#if !(YYOPTTIME)
-1, 1322,
#endif
	41, 532,
	-2, 308,
#if !(YYOPTTIME)
-1, 1447,
#endif
	41, 532,
	-2, 308,
#if !(YYOPTTIME)
-1, 1479,
#endif
	41, 532,
	-2, 308,
#if !(YYOPTTIME)
-1, 1545,
#endif
	41, 532,
	-2, 308,
#if !(YYOPTTIME)
-1, 1562,
#endif
	41, 532,
	-2, 308,

};

# define YYNPROD 838
#if YYOPTTIME
YYSTATIC YYCONST yyexind_t yyexcaind[] = {
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    4,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    8,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   14,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   20,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   24,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   30,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   34,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   38,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   42,   46,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   50,   54,
    0,    0,    0,    0,    0,   58,    0,    0,    0,    0,
    0,    0,   62,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   66,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   70,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   74,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   78
};
#endif
# define YYLAST 3904

YYSTATIC YYCONST short YYFARDATA YYACT[] = {
  699, 1398, 1121, 1466,  658, 1467,  639, 1024, 1465,  878,
 1464,  963,  784,  753,  964,  221,  775,   26,  698,  725,
   73,   75,  275,  414,  624,  877,  966, 1399,  535,  191,
  477, 1503,  150,  788,  751,  756, 1134,  110, 1065,  107,
  690,  852,  273,  153,  219,  660,   24,   44,  776,  218,
  307,   10,  190,  176,   78,   81,    6,   86,    5,  598,
  673,  262,  204,  515,    3,  188,  217,  983,   17,  301,
  603,  136,   76, 1550, 1194, 1242,  214,  264,    7, 1238,
 1057, 1239, 1113, 1111,   85, 1112,  580,   74,  715,   88,
   87,  137,   89,  300,  115,   56,  139,  712,  672,  113,
 1058,   98,  112,  178,  179,  180,  181,   74,  272,  696,
  322,  519, 1015,  461,  220,   56,   18,  452,  536,  338,
  278,   88,   87, 1021,   89,  268,  216,  269, 1240,  225,
   56,  265,  277,  277, 1228, 1229,  106, 1226, 1227,  590,
  277,  343,  361,  360,  359,  358,  654,  368,  345,  653,
   68,  310,  312,  314,  316,  318,  185, 1554,  460, 1126,
 1127, 1414,   98,  931,  932,  327,  277,  348,  339, 1027,
  342,  778, 1026,  779,  373,  366,  154,  277,  695,  133,
  694,  991,  379,  271,  362,   84,  258,  364,  363,  376,
  614,  192,  387,  105, 1519,  662,  513,  930,  365, 1059,
  369,  202,  203,  371,  370, 1487,  374, 1264,  596,  450,
  661,  451,  763,  372,  416,  469,  186,  467,  471,  470,
  442,   26,   74,  376,  456,  417,  418,  346,  376, 1559,
  352,  472,  474,  599,  353,  305,  483,  388,   88,   87,
  596,   89,  410, 1263, 1478,  500,  492, 1314,  457,  441,
   24, 1200,  357,  491,  435,   10,  825,  797,  787,   56,
  486,  432,  490,  428,  475,  478,  479,  773,  476,  429,
  494,  434,   17,  192,  108,  666,  511,  511,  528,  534,
  375,  433,    7,  351,  267,  321,  480,  481,  473,  485,
  152,  710,   74,  484, 1234,  540, 1345,  116, 1496, 1391,
   56, 1540,  499,   80,   79,  498,  543,  493, 1417,  571,
  959,  268, 1351, 1544,  574,  348,  575,  154,  576,  436,
   18,  266,  548, 1335, 1116,  578,  579,  504,  541,   46,
  420,  544,  421,  422,  423,  933,  934,  570,  935,   88,
  572,  947,   89,  573,   46,  594,  854,  855,  856, 1128,
  640,  641,  600,  135,  198,   88,   87,  962,   89,  199,
 1541,  200,  568, 1510,  192,  487, 1341,  201,  612,  154,
  755,  482,  277,  674, 1543,  510,  510,  527,  533,   74,
  605,  744,  745,  746,  195,  808,  182,  623,  943,  611,
  599,  581,  582, 1141,  497, 1233,  700, 1252, 1142,  196,
  565,  367,  375,  620,  595,  258,  610,   88,   87,  518,
   89,   74,  606,  607,  608,  609,  747,  748,  749, 1542,
  643,  613,  599,  537,  340,  341,  634, 1489,  348,  807,
  459,  618,  619,  621,  780, 1130,  321,  876,  648,  649,
  638,   88,   87,  177,   89, 1231,   88,   87,  847,   89,
  152,  781,  702,  754,  347,  650,  664, 1502,  413,   88,
   87,  670,  946, 1488,  651,   88,   87,  155,   89,  681,
  642, 1518, 1126, 1127,  545,  743, 1118,  177,  993,  994,
  995,  996,  177,  587,  505,  859,  352, 1513,  667,  988,
  353,  678,   80,   79,  479,  177,  647,  692,  646, 1512,
  782, 1511,   61,   62,   47,   63,  536, 1508,  357,  645,
  685,  198,  741,  669,  480,  481,  199,  689,  200,   82,
   63,   74,  701,  479,  201,  711,  680,  453,   72,  679,
   88,   87,  519,   89,  512,  520,   74,  507,  508,  351,
  686,  195,   88,  480,  481,   89,   74,  723,   71,   70,
  354,  355,  356,  538,  691,  216,  196, 1141,  225, 1506,
 1241,  724, 1142,  675,  676,  677,  720,  657,  721,   49,
   50,   51,   52,   53,   54,   55,  671,  709,   74,  644,
  479,  730, 1504,   80,   79,  714,   80,   79,  348,   49,
   50,   51,   52,   53,   54,   55,  719,   74, 1141,  716,
  480,  481,  726, 1142,   49,   50,   51,   52,   53,   54,
   55,  156,  157,  158,   69,  758,   74,  542,   74,   88,
   87,  592,   89,  600,   67,  764,  765,  155,   88,   87,
  688,   89,   74,  783,   98,  638,  729, 1320, 1319, 1318,
 1317,  750,   74,  697,  325,   74,  703, 1172, 1171, 1170,
 1169,  542,  705,  348,  706,  177,  377, 1499,  324,  769,
  770,  771, 1337, 1338, 1339,  642,  815,  789,  813,  819,
  853,   88,   87,  816,   89,  822,  541, 1180,  801,  802,
   80,   79,  798,  823,   88,  812,  806,   89,   74,   66,
  818,  626,  627,  628,   74, 1117,  833,  834,  762, 1450,
  495,  826,  216,  786,  591,  225, 1439,  800,  793,  803,
   74,  809,  796,  636,  846,  824,  382,  383,  384,  385,
  817,  152,   74,  857,   74,   56,  629,  630,  631,  922,
   74,  740,  821,   49,   50,   51,   52,   53,   54,   55,
 1437,  850,  936,  937,  860, 1490,  516,  761,   88,   87,
  375,   89,  832, 1327,  844, 1247, 1243, 1244, 1245, 1246,
 1179, 1435,  769,  600,  949,  192,  845,  942, 1433,  848,
  276,  156,  157,  158,   49,   50,   51,   52,   53,   54,
   55,   97,   74,  924,  111,  925,  926,  927,  928,  929,
  952, 1001, 1416, 1407,  985,  152,  635,  938, 1406,  277,
 1013,  965,  362, 1326, 1011,   74,  354,  355,  356,  442,
 1000, 1009,  528,  605, 1404,  585,  954,  584,  583,  145,
 1390, 1012,  948, 1388,  586,  799,  960,  955,  277, 1017,
  958,  692,  692, 1032, 1378, 1376, 1237,  350,  441,  999,
 1008,  817, 1022,  435,  997, 1007,  851, 1374, 1037, 1014,
  432,  817,  428,  849, 1019, 1035, 1016, 1018,  429, 1039,
  434,  989,  326,  323,   88,   87,   94,   89,   74, 1372,
  433, 1033, 1034, 1045,  352,  772,  828,  277,  353, 1030,
   80,   79,  479, 1050,  277,   56, 1370, 1368,  691,  691,
   88,   87,  348,   89,   74,  954,  357,  337,  155,  348,
 1366, 1364,  480,  481,  668, 1362,  817, 1359,  436,  998,
 1006,  527, 1356, 1123, 1354, 1350,   56, 1334, 1312, 1055,
  152, 1196,   88,   87,  718,   89,  177,  351, 1044, 1053,
  193,  615, 1043,  194, 1051,  348, 1042,  352, 1041,   46,
  352,  353, 1122, 1023,  768,  820, 1067,  814, 1068, 1126,
 1127,  501,  733,  617,  616, 1124,  198,  177, 1132,  357,
  145,  199,  357,  200,   88,   87,  577,   89,  758,  201,
  564, 1300,  155, 1236,  308, 1119,  455,  109, 1054, 1140,
 1129,   92,  529, 1138, 1125, 1394,  195, 1298, 1115, 1185,
  351, 1183, 1184,  351,   88,   87, 1186,   89, 1178,  277,
  177,  196, 1296, 1491, 1064, 1060, 1061, 1062, 1063, 1025,
 1492, 1133,  145, 1182, 1415,  328,  329,  330, 1294, 1181,
  956,   96, 1301,  590,  104,  103,  102,  101, 1219,   99,
  100,  105,   56,    1, 1175, 1332, 1195, 1173, 1299, 1203,
  332,  941,  156,  157,  158, 1167, 1187, 1188, 1189, 1190,
 1230,  766, 1202, 1297, 1165, 1232, 1191, 1192, 1193,   80,
   79,  479,  588, 1131, 1223, 1225, 1224, 1222,  984, 1295,
 1235, 1197, 1400,   88,   87, 1163,   89, 1198, 1161, 1199,
  945,  480,  481,  589, 1218, 1176,  189,  708, 1174,   88,
   87, 1005,   89, 1003, 1004, 1159, 1168,  155, 1010,   46,
  707,  205,  152, 1157,  704, 1166,  633, 1412,  412,  187,
  625,  790,   61,   62,   47,   63,  156,  157,  158, 1248,
 1177,  192,  192,  192,  192,  177, 1164,  277, 1268, 1162,
   46,  192,  192,  192,  331, 1266,  333,  334,  335,  336,
 1155,  625, 1251,  192, 1411, 1265, 1160, 1269, 1410, 1271,
 1273, 1274, 1255, 1277, 1158, 1279, 1280, 1281, 1282, 1283,
 1284, 1285, 1270, 1287, 1288, 1289, 1290, 1291, 1292, 1293,
 1254, 1401, 1259,   56, 1302, 1303, 1153, 1305, 1304, 1151,
 1272, 1149, 1275, 1276, 1147, 1278, 1221, 1048, 1267, 1047,
  836, 1156, 1307, 1286,  354,  355,  356, 1145, 1143,   49,
   50,   51,   52,   53,   54,   55,  742, 1316,  118,  119,
  120,  121,  122,  123,  124,  125,  126,  127,  128,  129,
  130,  131,  132,  665, 1313,  352,  317, 1154,  454,  353,
 1152,  315, 1150,  313, 1328, 1148,  378, 1330, 1331,  521,
 1321,  156,  157,  158,  311,   45,   46,  357, 1146, 1144,
 1336, 1340,  309, 1333,  817,   41,   43,  354,  355,  356,
  354,  355,  356, 1135, 1342,  277,  277, 1140, 1552,  526,
  590,   88,   87,  306,   89,   63,  415,  308,  351,  155,
 1315, 1343,  308, 1257,  308,   56,  277,  503, 1452,  512,
  590, 1451,  507,  508,  140,  308, 1380, 1381, 1382, 1383,
 1384, 1385, 1386,  308,  944, 1347,   63,  177,  590, 1539,
  590, 1329, 1344, 1392, 1393,  193,  531, 1346,  194,  532,
 1397, 1396,  940,  831,  308,  138, 1379, 1402, 1403, 1031,
 1524,  590,  923, 1408,  590,  590, 1395,  830,  811,  767,
  760,  198,  177, 1405,  717,  566,  199,  349,  200,  258,
  303,  792, 1564,  117,  201,   97, 1555, 1553, 1140,   49,
   50,   51,   52,   53,   54,   55, 1546, 1523,  817, 1486,
 1485,  195, 1484, 1454, 1449, 1446, 1443, 1442, 1438,   56,
  524, 1436, 1434, 1432, 1419, 1413,  196,   46, 1409, 1389,
   49,   50,   51,   52,   53,   54,   55,  134, 1445, 1387,
 1377, 1375, 1373, 1371, 1369, 1367, 1365, 1363, 1361, 1360,
  526, 1455, 1456, 1457, 1358, 1357, 1355, 1453, 1353, 1444,
 1448, 1352,   63,  156,  157,  158, 1349, 1324, 1348, 1325,
 1458, 1323,  523, 1311, 1470,  525, 1310, 1471, 1469, 1468,
 1306, 1256, 1253,  258, 1476,  693, 1220,   88,   87, 1114,
   89, 1052, 1481, 1038, 1480, 1036, 1029, 1028, 1020,  961,
  951,  950,   56, 1498,  939, 1483, 1505, 1507, 1509,  858,
 1505, 1507, 1509,  530,  841,  840, 1495, 1507, 1516,  838,
 1520, 1517, 1515, 1514, 1522, 1521,   88,  835,  829,   89,
  827,   56,  810, 1497, 1500, 1501,  791,  774,  738,   46,
  737, 1538,  736, 1493,  735,  734,   49,   50,   51,   52,
   53,   54,   55,  732,  731, 1529, 1505, 1507, 1509,  684,
  637,  524,  569,  425,  424,  344,  258,  320,  206, 1562,
 1547, 1525,  817, 1545, 1479, 1475, 1474, 1473, 1472, 1447,
 1534, 1441, 1440, 1431, 1430,  354,  355,  356, 1551, 1429,
 1549, 1428, 1427, 1548, 1535, 1536, 1537,  449, 1426, 1425,
 1424, 1423, 1561,   63, 1422, 1421, 1560, 1563, 1420, 1418,
 1300, 1298, 1296,  523, 1294, 1322,  525, 1175, 1173, 1557,
   88, 1558, 1167,   89, 1556, 1526, 1527, 1528, 1530, 1531,
 1532, 1533, 1165,   46, 1163,   96, 1161, 1159,  104,  103,
  102,  101,   56,   99,  100,  105, 1157, 1155, 1153, 1151,
 1149, 1309, 1308,  817, 1250, 1249, 1066, 1056, 1049, 1040,
  245,  246,  247,  248,  249,  250,  251,  252,  253,  254,
  255,  256,  257,  987,  986,  953,  843,   59,  842,  839,
  837,  208,  259,  210,  228,  212,  213,   49,   50,   51,
   52,   53,   54,   55,  728,   41,   43,  727,  713,  687,
  683,  682,  663,   88,  632,  602,   89,  601,  593,  567,
  547,  546,   61,   62,   47,   63,   46,  496,  419,  411,
  874,  386,  319,  223,  304,  522,  514,  868,  517,  869,
  870,  871,  509,  506,   56,  502,  302,  222,   36,  184,
   93,   33,  468,  466,  465,   46,  464,  463,  244,  462,
  227,  243,  215,  209,  245,  246,  247,  248,  249,  250,
  251,  252,  253,  254,  255,  256,  257,  863,  864,  865,
   95,   59,  226,  224,  207,  208,  259,  210,  228,  212,
  213,  211,  879,   31,   56, 1002,  992,  439,  795,   41,
   43,  431,  794,  430,  427,  539, 1046,  270,   83,   49,
   50,   51,   52,   53,   54,   55,   61,   62,   47,   63,
   29,   57,  862,  866,  867,   34,  872,  223,   25,  873,
   16,  263,   15,   14,  261,   13,  260,   12,   11,    9,
    8,  222, 1086,    4,    2,  234,  242,  245,  246,  247,
  248,  249,  250,  251,  252,  253,  254,  255,  256,  257,
  990,  241,  240,  239,   59,  238,   46,  237,  208,  259,
  210,  228,  212,  213,  236,  235,  226,  224,  233,  232,
  231,  230,   41,   43,  229,  114,   77,   42,   56,   38,
   30,   58,   32,   59,  752,  656,  655, 1482,  299,   61,
   62,   47,   63,   49,   50,   51,   52,   53,   54,   55,
  223,   41,   43,   90,  183,  861, 1139,  757,  785, 1258,
  957, 1137, 1136,  604,  222, 1461, 1460, 1459,   61,   62,
   47,   63, 1477, 1463, 1462,   60,   35, 1201, 1120,  597,
  659,   21,  777,   91,   37, 1069,  739,   65,   64,  197,
  875,   39,   40,    0,  426,    0,    0,    0,    0,  226,
  224,    0,  982,  981,  980,    0,  975,  974,  973,  972,
    0,  970,  971,  105,    0,  979,  978,  977,  976,    0,
    0,    0,  969,  967,    0,    0,   49,   50,   51,   52,
   53,   54,   55,    0,    0,    0,    0,    0,    0,    0,
   38,   30,   58,   32,   59,    0,   19,   20,   46,   22,
   23,   48,    0,   27,   28,   49,   50,   51,   52,   53,
   54,   55,   41,   43,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   61,
   62,   47,   63,    0,    0,    0,   60,   35,  968,    0,
    0,    0,   21,    0,    0,   37,  444, 1097,    0,  874,
    0,    0,   39,   40,    0,    0,  868,    0,  869,  870,
  871,    0,    0,    0,    0,    0, 1073, 1074,    0, 1081,
 1095, 1075, 1076, 1077, 1078,    0, 1079, 1080,    0, 1096,
 1082, 1083, 1084, 1085,    0,    0,    0,    0,    0,    0,
    0,    0,   46,    0,    0,    0,  863,  864,  865,    0,
    0,    0,    0,    0,    0,    0,    0,   19,   20,    0,
   22,   23,   48,    0,   27,   28,   49,   50,   51,   52,
   53,   54,   55,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  448,    0,   58,   32,   59,    0,    0,    0,
  444,  862,  866,  867,    0,  872,  445,    0,  873,    0,
    0,  446,    0,    0,   41,   43,    0,  146,  874,    0,
    0,    0,    0,    0,    0,  868,    0,  869,  870,  871,
    0,   61,   62,   47,   63,    0,  437,  438,    0,  921,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  447,    0,    0,    0,
    0,    0,    0,    0,    0,  863,  864,  865,   49,   50,
   51,   52,   53,   54,   55,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  448,    0,   58,   32,
   59,  443,  440,    0,    0,    0,    0,    0,    0,    0,
  445,    0,    0,    0,    0,  446,    0,    0,   41,   43,
  862,  866,  867,    0,  872,    0,    0,  873,   49,   50,
   51,   52,   53,   54,   55,   61,   62,   47,   63, 1494,
  437,  438, 1071, 1072,    0, 1087, 1088, 1089,    0, 1090,
 1091,    0,    0, 1092, 1093,    0, 1094,    0,    0,    0,
  447,    0,    0,    0,    0,    0,    0,    0,    0, 1070,
 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107,
 1108, 1109, 1110,  893,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  443,  440,  920,    0,    0,
    0,    0,  885,  886,    0,  894,  911,  887,  888,  889,
  890,    0,  891,  892,    0,  912,  895,  896,  897,  898,
  893,    0,   49,   50,   51,   52,   53,   54,   55,    0,
    0,    0,    0,    0,  920,  146,    0,    0,    0,  885,
  886,    0,  894,  911,  887,  888,  889,  890,    0,  891,
  892,    0,  912,  895,  896,  897,  898,    0,    0,    0,
  909,    0,  913,    0,    0,  175,    0,  915,    0,  151,
  148,  163,  161,  170,    0,  164,  165,  166,  167,    0,
  168,  169,  917,    0,  171,  172,  173,  174,  563,    0,
    0,  142,  162,  152,    0,    0,    0,  909,    0,  913,
  141,  147,    0,    0,  915,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  918,  143,  144,  149,  917,
  555,    0,  549,  550,  551,  552,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  146,    0,    0,    0,    0,
  352,    0,    0,    0,  768,    0,    0,    0,    0,    0,
  160,    0,  918,    0,    0,    0,    0,    0,  557,  558,
  559,  560,  357,    0,  554,    0,    0,    0,  561,  562,
  553,    0,    0,    0,    0,  982,  981,  980,    0,  975,
  974,  973,  972,    0,  970,  971,  105,    0,  979,  978,
  977,  976,    0,  622,    0,  969,  967,    0,    0,    0,
    0,    0,    0,    0,    0,  880,    0,  881,  882,  883,
  884,  899,  900,  901,  916,  902,  903,  904,  905,  906,
  907,  908,  910,  914,    0,    0,    0,  919,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  880,    0,  881,  882,  883,  884,  899,  900,
  901,  916,  902,  903,  904,  905,  906,  907,  908,  910,
  914,  968,   88,   87,  919,   89,    0,    0,    0,    0,
  155,    0,  556,  175,    0,    0,    0,  151,  148,  163,
  161,  170,    0,  164,  165,  166,  167,    0,  168,  169,
    0,    0,  171,  172,  173,  174,  146,    0,  177,  142,
  162,  352,    0,    0,    0,  353,    0,    0,  141,  147,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  357,  143,  144,  149,    0,    0,  175,
    0,    0,    0,    0,    0,  163,  161,  170,    0,  164,
  165,  166,  167,    0,  168,  169,    0,    0,  171,  172,
  173,  174,    0,    0,  622, 1261,  162,    0,  160,  159,
    0,    0,   88,   87,    0,   89,    0,    0,    0,    0,
  155,    0,    0,  175,    0,    0,    0,  151,  148,  163,
  161,  170,    0,  164,  165,  166,  167,    0,  168,  169,
    0,    0,  171,  172,  173,  174,    0,    0,  177,  142,
  162,    0,    0, 1262,    0,    0,    0,    0,  141,  147,
    0,    0,    0,    0,  156,  157,  158,    0,    0,    0,
    0, 1260,    0,    0,  143,  144,  149,    0,    0,    0,
    0,    0,    0,    0,  297,  198,  146,    0,    0,    0,
  199,  352,  200,    0,    0,  353,    0,    0,  201,    0,
    0,   63,    0,    0,    0,    0,    0,    0,  160,    0,
  354,  355,  356,  357,    0,  195,  284,    0,  279,  280,
  281,  282,  283,    0,  640,  641,    0,  287,    0,    0,
  196,    0,    0,    0,    0,    0,  285,    0,    0,    0,
  295,    0,  286,    0,  622,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  288,  289,  290,  291,  292,  293,
  294,  298,    0,    0,  156,  157,  158,  296,    0,    0,
    0,    0,    0,   88,   87,    0,   89,    0,    0,    0,
  146,  155,    0,    0,  175,    0,    0,    0,  151,  148,
  163,  161,  170,    0,  164,  165,  166,  167,    0,  168,
  169,    0,    0,  171,  172,  173,  174,    0,    0,  177,
  142,  162,    0,    0,    0,    0,    0,    0,    0,  141,
  147,    0,    0,    0,  348,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  143,  144,  149,  274, 1217,
 1216, 1211,    0, 1210, 1209, 1208, 1207,  146, 1205, 1206,
  105,    0, 1215, 1214, 1213, 1212,    0,    0,    0,    0,
    0, 1204,    0,    0,    0,    0,    0,    0,    0,  160,
    0,  354,  355,  356,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  640,  641,  982,  981,  980,
    0,  975,  974,  973,  972,    0,  970,  971,  105,    0,
  979,  978,  977,  976,    0,  274,    0,  969,  967,    0,
    0,    0,    0,   88,   87,    0,   89,    0,    0,    0,
    0,  155,    0,    0,  175,  156,  157,  158,  151,  148,
  163,  161,  170,    0,  164,  165,  166,  167,    0,  168,
  169,    0,    0,  171,  172,  173,  174,  146,    0,  177,
  142,  162,    0,    0,    0,    0,    0,    0,    0,  141,
  147,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  968,    0,  143,  144,  149,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  274,    0,   88,   87,  160,
   89,  354,  355,  356,  146,  155,    0,    0,  175,    0,
    0,    0,  151,  148,  163,  161,  170,    0,  164,  165,
  166,  167,    0,  168,  169,    0,    0,  171,  172,  173,
  174,    0,    0,  177,  142,  162,    0,    0,    0,    0,
    0,    0,    0,  141,  147,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  156,  157,  158,    0,  143,
  144,  149,  274,  805,   88,   87,    0,   89,    0,    0,
    0,    0,  155,    0,    0,  175,    0,    0,    0,  151,
  148,  163,  161,  170,    0,  164,  165,  166,  167,    0,
  168,  169,    0,  160,  171,  172,  173,  174,  146,    0,
  177,  142,  162,    0,    0,    0,    0,  804,    0,    0,
  141,  147,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  143,  144,  149,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  156,
  157,  158,    0,    0,    0,    0,  274,    0,    0,    0,
  160,  159,    0,    0,   88,   87,  146,   89,    0,    0,
    0,    0,  155,    0,    0,  175,    0,    0,    0,  151,
  148,  163,  161,  170,    0,  164,  165,  166,  167,    0,
  168,  169,    0,    0,  171,  172,  173,  174,    0,    0,
  177,  142,  162,    0,    0,    0,    0,    0,    0,    0,
  141,  147,    0,    0,    0,    0,  156,  157,  158,    0,
    0,    0,    0,    0,  274,    0,  143,  144,  149,    0,
    0,   88,   87,    0,   89,    0,    0,    0,    0,  155,
    0,    0,  175,    0,    0,    0,  151,  148,  163,  161,
  170,    0,  164,  165,  166,  167,    0,  168,  169,    0,
  160,  171,  172,  173,  174,    0,    0,  177,  142,  162,
    0,    0,    0,    0,    0,    0,    0,  759,  147,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  143,  144,  149,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  146,    0,    0,    0,    0,  156,  157,  158,    0,
    0,    0,    0,    0,    0,   88,   87,  160,   89,    0,
    0,    0,    0,  155,    0,    0,  175,    0,    0,    0,
  151,  148,  163,  161,  170,    0,  164,  165,  166,  167,
    0,  168,  169,    0,    0,  171,  172,  173,  174,    0,
    0,  177,  142,  162,    0,    0,  146,    0,    0,    0,
    0,  141,  147,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  156,  157,  158,    0,  143,  144,  149,
    0,    0,    0,   88,   87,    0,   89,    0,    0,    0,
    0,  155,    0,    0,  175,    0,    0,    0,  151,  148,
  163,  161,  170,    0,  164,  165,  166,  167,    0,  168,
  169,  652,  146,  171,  172,  173,  174,    0,    0,  177,
  142,  162,   88,   87,    0,   89,    0,    0,    0,  141,
  147,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  143,  144,  149,    0,    0,
    0,    0,    0,    0,    0,    0,  409,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  146,  156,  157,  158,
  988,    0,    0,    0,    0,    0,    0,    0,    0,  458,
    0,    0,    0,    0,  391,    0,    0,    0,  407,    0,
    0,  389,  390,    0,    0,    0,  393,  394,  405,  395,
  396,  397,  398,  399,  400,  401,  402,  392,    0,    0,
    0,    0,    0,  406,    0,    0,  404,    0,    0,    0,
  146,    0,    0,  403,  722,    0,    0,    0,    0,    0,
    0,    0,  408,    0,    0,  156,  157,  158,  488,  175,
  489,    0,    0,  151,  148,  163,  161,  170,    0,  164,
  165,  166,  167,    0,  168,  169,    0,    0,  171,  172,
  173,  174,    0,    0,  177,  142,  162,    0,    0,    0,
    0,    0,    0,    0,  141,  147,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  143,  144,  149,  380,  175,  381,    0,    0,  151,  148,
  163,  161,  170,    0,  164,  165,  166,  167,    0,  168,
  169,    0,    0,  171,  172,  173,  174,    0,    0,    0,
  142,  162,    0,    0,  160,    0,    0,    0,    0,  141,
  147,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  143,  144,  149,    0,    0,
  175,    0,    0,    0,  151,  148,  163,  161,  170,    0,
  164,  165,  166,  167,    0,  168,  169,    0,    0,  171,
  172,  173,  174,    0,    0,    0,  142,  162,    0,  160,
    0,    0,    0,    0,    0,  141,  147,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  143,  144,  149,  175,    0,    0,    0,  151,  148,
  163,  161,  170,    0,  164,  165,  166,  167,    0,  168,
  169,    0,    0,  171,  172,  173,  174,    0,    0,    0,
  142,  162,    0,    0,    0,  160,    0,    0,    0,  141,
  147,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  143,  144,  149,  175,    0,
    0,    0,  151,  148,  163,  161,  170,    0,  164,  165,
  166,  167,    0,  168,  169,    0,    0,  171,  172,  173,
  174,    0,    0,    0,  142,  162,    0,    0,    0,  160,
    0,    0,    0,  141,  147,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  143,
  144,  149,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  160
};

YYSTATIC YYCONST short YYFARDATA YYPACT[] = {
-1000, 1543,-1000,  566,  501,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,  491,  426,  425,  405,-1000,-1000,-1000,   28,
   28, -454,   39,   39,-1000,-1000,-1000,  396,-1000, -129,
  411,-1000,  890,  743,    7,  886,   28, -366, -369,-1000,
 -171,  777,    7,  777,-1000,-1000,-1000,   90, 2292,  411,
  411,  411,  411,-1000,-1000,  124,-1000,-1000,-1000, -162,
 1048,-1000,-1000, 1046,    7,    7,-1000,-1000, 1403,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,   28, -139,-1000,-1000,
-1000,-1000,  359, -132, 2954, 1220,-1000,-1000,-1000,-1000,
 2430,-1000,   28,-1000, 1317,-1000, 1308, 1644,    7, 1233,
 1212, 1204, 1193, 1191, 1186, 1642, 1486,   18,-1000,   28,
  600,  662,-1000,-1000,   95, 1220,  411, 2954,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000, 1484,  166, 1303,  448, -244, -245, -246,
 -247,  359,-1000, -118,  359,  661,  368,-1000,-1000,  -76,
-1000, 3547,  186, 1189,-1000,-1000,-1000,-1000,-1000, 3383,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
  435,-1000,-1000,-1000,-1000,-1000, 1220, 1641,  326, 1220,
 1220, 1220,-1000, 3222,   79,-1000,-1000, 1639, 1047, 2854,
-1000, 3547,-1000,-1000,-1000,  216,  216,-1000, 1638,-1000,
-1000,   29, 1483, 1482, 1779, 1432,-1000,-1000,   28,-1000,
   28,   77,-1000,-1000,-1000,-1000, 1170,-1000,-1000,-1000,
-1000,-1000,  885,   28, 3183,-1000,   67,  -94,-1000,-1000,
  424,   28,   39,  228,    7,  424,  661, 3328, 2954,  -95,
  216, 2854, 1637,-1000,  282,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
  826,   71, 1114,  857,-1000,   87,-1000,  298,  359,-1000,
-1000, 2954,-1000,-1000,  181,  899,  216,  411,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000, 1631, 1630, 2084,
  877,  275, 1301, 1629,   79, 1481,    0,-1000,   28,    0,
-1000,   39,-1000,   28,-1000,   28,-1000,   28,-1000,-1000,
-1000,-1000,  873,-1000,   28,   28,-1000, 1220,-1000,-1000,
-1000, -387,-1000,-1000,-1000,-1000,-1000,  662,  488,   94,
-1000,-1000, 1220, 1022,-1000, 1292,  581, 1628,-1000,   82,
  411,  115,-1000,-1000,-1000, 1627, 1625, 3547,  411,  411,
  411,  411,-1000,  359,-1000,-1000, 3547,  604,-1000, 1220,
-1000,  -90,-1000,  899,  838,  861,  860,  411,  411, 2693,
-1000,-1000,-1000,-1000,-1000,-1000,   28, 1292, 1081,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,  362,-1000,-1000,-1000, 1624,
 1045,-1000,  673, 1479,-1000,-1000, 2553,-1000,-1000,   28,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,  386,
  375,  373,-1000,-1000,-1000,-1000,-1000,   28,   28,  332,
 3115,-1000,-1000, -214, -217,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,  -65, 1622,-1000,   28, 1165,    1,  216,  813,
   28,-1000,  -94,   63,   63,   63,   63, 2954,  282,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
 1621, 1620, 1478,-1000,-1000,-1000, 2693,-1000,-1000,-1000,
-1000, 1292, 1619,    7, 3547,-1000,  424, 1320,-1000, -136,
 -138,-1000,-1000, -356,-1000,-1000,    7,  354,  391,    7,
-1000,-1000, 1043,-1000,-1000,    7,-1000,    7,-1000, 1039,
 1026,-1000,-1000,  411, -177, -371, 1618,-1000,-1000,-1000,
-1000,  411, -380,-1000,-1000, -350,-1000,-1000,-1000, 1300,
-1000,  831,  411, 3547, 1220, 3493,   28,   53, 1187,-1000,
-1000,-1000,-1000,-1000,-1000,-1000, 1617,-1000,-1000,-1000,
-1000,-1000,-1000, 1614,-1000,-1000, 1317,   53, 1473,-1000,
 1472,  859, 1464, 1463, 1461, 1459, 1457,-1000,  468, 1148,
-1000,   86, 1220,-1000,-1000,-1000,   52,  411,   53,  330,
  108, 3021,-1000,-1000, 1296, 1220,-1000,  654,-1000,-1000,
  -63, 2954, 2954,  989, 1295,  899, 1220, 1220, 1220, 1220,
-1000, 2392,-1000, 1220,-1000,  411,  411,  411,  782, 1220,
   -7, 1220,  147, 1456,-1000,  128,-1000,-1000,-1000,-1000,
-1000,-1000,   28,-1000, 1292,-1000,-1000,  661,  -16, 1051,
-1000,-1000, 1220, 1455, 1226,-1000,-1000,-1000,-1000,-1000,
-1000,  -17,  216,  734, 2954, 2787,   59,  488, 1451, 1294,
-1000,-1000, 3493,  -65,  854,   28,  -22, 3547,   28, 1220,
  852,-1000,-1000,-1000,  424,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,   28,   39,-1000,  -18, 1220,   53, 1449,  836,
 1447, 1293, 1279,-1000,   79,   28,   28, 1446, 1132,-1000,
-1000, 1292, 1600, 1438, 1599, 1434, 1433, 1598, 1596, 1220,
  411,-1000,  411,   28,  131,  411,    7, 2954,  411,  753,
  902,  192, -157, 1428,   96, 1824,  120, 2016,   28,-1000,
 1291,-1000,  883,-1000,  883,  883,  883,  883,  883, -120,
-1000,   28,   28,  411,-1000,-1000,-1000,-1000,-1000,-1000,
 1220, 1423, 1278,  980,-1000,-1000,  263, 1260, 1019,  199,
   78,-1000,  -42,   28, 1420, 1419,-1000, 3547, 1595, 1189,
 1189, 1189,  411,  411,-1000,  958,  270,  128,-1000,-1000,
-1000,-1000,-1000, 1418,  232, 1635, 1007,  -22, 1594, 1593,
 3439,-1000,-1000, 1685,   56,  666,  973,  -22, 3547,   28,
 1220, -337,  411, 1220,-1000,-1000, 3547,-1000,-1000, 1220,
-1000,  -65,  192, 1417, -266,-1000,-1000, 1220, 2693,  850,
  948, -144, -147, 1416, 1415,  411, 1288,-1000,  -65,-1000,
  424,  424,-1000,-1000,-1000,-1000,  354,-1000,-1000,-1000,
-1000,-1000,-1000,-1000, 1189, 1220, 1414,   28, 1220, 1412,
-1000,  411,  -22, 1579,  845,  843,  839,  835,-1000,   53,
 1715,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000, 1131, 1129, 1578,  948,   79, 1410,  887,    7,
 1577, -400,  -78,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,  724,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000, 1576, 1576,-1000, 1576,
 1750,-1000,-1000, -412,-1000, -402,-1000,-1000, -417,-1000,
-1000,-1000, 1408,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
   79,-1000,-1000,-1000,-1000,-1000,   61,  432, 1220,-1000,
   53,  630,  224,-1000, 3021,  312, 1002,-1000,-1000,-1000,
-1000,-1000,  899,  -65, 1189, 1220,-1000,  411, 1219, 2954,
-1000,-1000,-1000,  200,-1000,-1000,-1000, 1158, 1157, 1144,
 1141, 1139, 1136, 1100, 1063, 1055, 1038, 1035, 1014, 1005,
  366,  997,  994,    7,  637, 1051,  -65,  -65,   28,  934,
-1000,-1000,-1000,  661,  661,  661,  661,-1000,-1000,-1000,
-1000,-1000,-1000,  661,  661,  661,-1000,-1000,-1000,-1000,
-1000, -434, 2693,  828,-1000,  661, 1220, 1187,-1000,   79,
-1000,   79,  -23,-1000,-1000, 2602,   79,   28,-1000,-1000,
 1220,-1000, 1405,-1000,-1000, 1128,-1000,-1000, -301, 1050,
 2016,-1000,-1000,-1000,-1000, 1292,-1000, -254, -257,   28,
-1000,-1000,-1000,-1000,  352,  169,   53,  882,  745,-1000,
-1000,-1000,-1000,-1000,-1000,-1000, -423,-1000,-1000,   37,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,  475,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,   28,-1000,
-1000,-1000,-1000, 1575, 1292, 1574,-1000,-1000,-1000,-1000,
-1000,  274, 1401, 1219,-1000,  128, 1400, 1239,-1000, 2348,
-1000,-1000,-1000,  -56,   28,  829,   28, 2650,   28,  314,
   28,  795,   28,   39,   28,   28,   28,   28,   28,   28,
   28,   39,   28,   28,   28,   28,   28,   28,   28,  978,
  962,  947,  931,   28,   28, -160,   28, 1399, 1292,-1000,
-1000, 1572, 1571, 1395, 1392,  825,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,  216,  -27,-1000, 1240,-1000,-1000,
  -22,-1000,-1000, 1292,-1000, 1570, 1569, 1568, 1567, 1566,
 1557,  356, 1556, 1554, 1552, 1542, 1538, 1537,-1000,-1000,
-1000,  354,-1000, 1535, 1390, 1386,-1000,-1000,-1000,-1000,
 1388,-1000,  710,   28,-1000, 1267,   28,   28,  974,   53,
  824,-1000,-1000,-1000,-1000,-1000,-1000,-1000,   60,   28,
  381,  241,-1000,-1000,-1000,-1000,-1000, 2954,  205,-1000,
-1000,-1000, 1011, 1387, 1385,  822,   49, 1380, 1377,  821,
 1375,  819, 1374, 1373,  814, 1368, 1367,  812, 1366,  808,
 1365,  807, 1364,  794, 1363,  793, 1362,  776, 1361,  754,
 1360,  742, 1359,  741,   39,   28,   28,   28,   28,   28,
   28,   28, 1358,  730, 1348,  727,-1000,  174,  -65,  -65,
-1000,-1000,  923, 3547,  -22,  -65, 1012, 1534, 1532, 1531,
 1530, 1113,  -65,-1000,-1000,-1000,-1000,   28,  721,   53,
  705,  700,   28, 1292,-1000,-1000, 1347, 1090, 1086, 1049,
 1344,-1000,   36,-1000,  953,  699,   45,-1000,-1000,-1000,
 1529, 1343,-1000,-1000, 1528,-1000, 1525,-1000,-1000, 1524,
-1000,-1000, 1521,-1000, 1520,-1000, 1519,-1000, 1518,-1000,
 1512,-1000, 1511,-1000, 1509,-1000, 1504,-1000, 1503, 1342,
  675, 1341,  668, 1340,  647, 1337,  613,-1000, 1502,-1000,
 1501,-1000, 1336, 1335,-1000, 2693, 1012, 1334, 1499,-1000,
  398,  354, 1333,  606,-1000, 1247,-1000, 2053, 1332,-1000,
   28,   28,   28,-1000,-1000, 2650,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000, 1498,-1000, 1497,-1000, 1496,-1000, 1495,
-1000,-1000,-1000,-1000,  -30, 1494,  948,  -65,-1000,-1000,
-1000,   53,-1000,  887,-1000, 1331, 1329, 1328,-1000,  164,
  704, 2188,  257,  616,  416,  541,  518,  466,  322,  460,
  458,  446,-1000,-1000,-1000,-1000,  430,  153,  -22,  -65,
-1000, 1326, 1207, 1265,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,   38,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,  319,  378,  333,  272,-1000,-1000,
-1000, 1493, 1325,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, 1490,   53,
-1000,-1000,-1000,-1000,-1000,  -65, -435,   28, 1227, 1316,
 -199, 1315,-1000,-1000,  216,-1000, 3547, 2693,  -45,  -22,
 1012, 1489,  -65, 1311,-1000
};

YYSTATIC YYCONST short YYFARDATA YYPGO[] = {
    0,   53,   57,    6, 1900,   43,   40,   29, 1899,    0,
 1898, 1897, 1896,  195,   50, 1895, 1893,    2, 1892,   48,
   38,    1,   27,   30,   31,    4, 1890,   45,   22,   59,
 1889,  136,   39,    9,   25,    7,   13, 1888,   41, 1887,
   14,   26, 1884, 1883,    5,    3,    8,   10, 1882, 1877,
 1876, 1875,   32,   33,   70, 1873, 1872, 1871, 1870,   12,
 1869, 1868,   11, 1867,   35, 1866,   18,   36,   16,   24,
   42,   23,  458,   65, 1276,   52,  127, 1864, 1863, 1848,
 1847, 1846, 1845,   19,   34, 1844, 1353, 1837, 1836,   28,
  784,  119, 1835,   47, 1245, 1834, 1831, 1830, 1829, 1828,
 1825, 1824, 1817, 1815, 1813, 1812, 1811, 1796, 1795, 1033,
 1794,   64,   62, 1793,   58,  150,   56,   76, 1790, 1789,
   49, 1788, 1787, 1786, 1785, 1784, 1783,   61, 1782, 1781,
 1780,   66,  114,   44, 1778,   15,  284, 1775, 1771, 1770,
 1758, 1757, 1755, 1754, 1753, 1752, 1751, 1748, 1747,  770,
 1746, 1745, 1743, 1742, 1741, 1734, 1713, 1712,   60, 1711,
 1710,  113, 1709, 1708, 1707,   98, 1706, 1704, 1703, 1702,
 1701, 1700, 1699,   69, 1696,   67, 1698,   63, 1695,  484,
 1693, 1692, 1688, 1686, 1685, 1473
};
YYSTATIC YYCONST yyr_t YYFARDATA YYR1[]={

   0, 109, 109, 110, 110, 110, 110, 110, 110, 110,
 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
 110, 110, 110, 110, 110, 110, 110, 110, 110, 136,
 136,  36,  36, 133, 133, 133,   2,   2,   1,   1,
   1,   9,  24,  24,  23,  23,  23, 134, 134, 134,
 134, 134, 135, 135, 135, 135, 135, 135, 135, 135,
 135,  93,  93,  93,  93,  94,  94,  94,  94,  10,
  11,  73,  72,  72,  59,  61,  61,  61,  62,  62,
  62,  65,  65, 132, 132, 132,  60,  60,  60,  60,
  60,  60, 130, 130, 130, 119,  12,  12,  12,  12,
  12,  12, 118, 137, 113, 138, 139, 111,  77,  77,
  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,
  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,
  77,  77,  77,  77,  77, 140, 140, 141, 141, 112,
 112, 142, 142,  56,  56,  57,  57,  69,  69,  18,
  18,  18,  18,  18,  19,  19,  68,  68,  67,  67,
  58,  21,  21,  22, 143, 143, 143, 143, 143, 143,
 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
 143, 143, 143, 116,  79,  79,  79,  79,  79,  79,
  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,
   4,   4,  35,  35,  16,  16,  75,  75,  75,  75,
  75,  75,  75,   7,   7,   7,   7,   8,   8,   8,
   8,   8,   8,   8,  76,  74,  74,  74,  74,  74,
  74, 144, 144,  81,  81,  81, 145, 145, 150, 150,
 150, 150, 150, 150, 150, 150, 146,  82,  82,  82,
 147, 147, 151, 151, 151, 151, 151, 151, 151, 152,
  38,  38,  34,  34, 153, 114,  78,  78,  78,  78,
  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
  78,  78,  78,  78,  78,  78,  78,  78,  78,  83,
  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
  83,  83,  83,  83,  83,   3,   3,   3,  13,  13,
  13,  13,  13,  80,  80,  80,  80,  80,  80,  80,
  80,  80,  80,  80,  80,  80,  80,  80, 154, 115,
 115, 155, 155, 155, 155, 155, 155, 155, 155, 155,
 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
 155, 155, 155, 155, 155, 158, 159, 156, 161, 161,
 160, 160, 160, 163, 162, 162, 162, 162, 166, 166,
 166, 169, 164, 167, 168, 165, 165, 165, 117, 170,
 170, 172, 172, 172, 171, 171, 173, 173,  14,  14,
 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
 174, 174, 174, 174, 174,  41,  41,  41,  41,  41,
  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,
  41,  41,  41,  41, 175,  31,  31,  32,  32,  39,
  39,  39,  40,  40,  40,  40,  40,  40,  40,  40,
  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
  40,  40,  40,  40,  40,  40,  40,  40,  42,  42,
  42,  43,  43,  43,  47,  47,  46,  46,  45,  45,
  44,  44,  48,  48,  49,  49,  49,  50,  50,  50,
  50,  51,  51, 149,  95,  96,  97,  98,  99, 100,
 101, 102, 103, 104, 105, 106, 107, 108, 157, 157,
 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 157,   6,   6,   6,   6,   6,  53,  53,  54,  54,
  55,  55,  25,  25,  26,  26,  27,  27,  27,  70,
  70,  70,  70,  70,  70,  70,  70,  70,  70,   5,
   5,  71,  71,  71,  71,  33,  33,  33,  33,  33,
  33,  33,  33,  33,  33,  33,  33,  33,  33,  33,
  33,  33,  33,  33,  33,  33,  33,  33,  33,  33,
  33,  33,  33,  33,  33,  33,  33,  33,  33,  33,
  33,  33,  33,  33,  33,  33,  33,  33,  33,  33,
  33,  33,  33,  33,  33,  33,  33,  33,  33,  33,
  20,  20,  15,  15,  15,  15,  15,  15,  15,  15,
  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,
  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,
  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,
  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,
  15,  28,  28,  28,  28,  28,  28,  28,  28,  28,
  28,  28,  28,  28,  28,  28,  28,  28,  28,  28,
  28,  28,  28,  28,  28,  52,  52,  52,  52,  52,
  52,  52,  52,  52,  52,  52,  52,  52,  52,  52,
  52,  52,  52,  30,  30,  29,  29,  29,  29,  29,
 131, 131, 131, 131, 131, 131,  64,  64,  64,  63,
  63,  87,  87,  84,  84,  85,  17,  17,  37,  37,
  37,  37,  37,  37,  37,  37,  86,  86,  86,  86,
  86,  86,  86,  86,  86,  86,  86,  86,  86,  86,
  86, 176, 176, 120, 120, 120, 120, 120, 120, 120,
 120, 120, 120, 120, 121, 121,  88,  88,  89,  89,
 177, 122,  90,  90,  90,  90,  90,  90,  90,  90,
  90,  90, 123, 123, 178, 178, 178,  66,  66, 179,
 179, 179, 179, 179, 179, 180, 182, 181, 124, 124,
 125, 125, 183, 183, 183, 183, 126, 148,  91,  91,
  91,  91,  91,  91,  91,  91,  91,  91, 127, 127,
 184, 184, 184, 184, 184, 184, 184, 128, 128,  92,
  92,  92, 129, 129, 185, 185, 185, 185 };
YYSTATIC YYCONST yyr_t YYFARDATA YYR2[]={

   0,   0,   2,   4,   4,   3,   1,   1,   1,   1,
   1,   1,   4,   4,   4,   4,   1,   1,   1,   2,
   2,   3,   2,   2,   1,   1,   1,   4,   1,   0,
   2,   1,   3,   2,   4,   6,   1,   1,   1,   1,
   3,   1,   1,   1,   1,   4,   4,   4,   4,   4,
   4,   4,   2,   3,   2,   2,   2,   1,   1,   2,
   1,   2,   4,   6,   3,   5,   7,   9,   3,   4,
   7,   1,   1,   1,   2,   0,   2,   2,   0,   6,
   2,   1,   1,   1,   1,   1,   1,   1,   1,   3,
   2,   3,   1,   2,   3,   7,   0,   2,   2,   2,
   2,   2,   3,   3,   2,   1,   4,   3,   0,   2,
   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
   2,   2,   2,   2,   2,   3,   3,   3,   3,   3,
   3,   2,   2,   2,   5,   0,   2,   0,   2,   0,
   2,   3,   1,   0,   1,   1,   3,   0,   3,   1,
   1,   1,   1,   1,   0,   2,   4,   3,   0,   2,
   3,   0,   1,   5,   3,   4,   4,   4,   1,   1,
   1,   1,   1,   2,   2,   4,  13,  22,   1,   1,
   5,   3,   4,   7,   0,   2,   2,   2,   2,   2,
   2,   2,   5,   2,   2,   2,   2,   2,   2,   5,
   0,   2,   0,   2,   0,   3,   9,   9,   7,   7,
   1,   1,   1,   2,   2,   1,   4,   0,   1,   1,
   2,   2,   2,   2,   4,   2,   5,   3,   2,   2,
   1,   4,   3,   0,   2,   2,   0,   2,   2,   2,
   2,   2,   1,   1,   1,   1,   9,   0,   2,   2,
   0,   2,   2,   2,   2,   1,   1,   1,   1,   1,
   0,   4,   1,   3,   1,  13,   0,   2,   2,   2,
   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
   2,   2,   2,   2,   2,   5,   8,   6,   5,   0,
   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
   4,   4,   4,   4,   5,   1,   1,   1,   0,   4,
   4,   4,   4,   0,   2,   2,   2,   2,   2,   2,
   2,   2,   2,   2,   2,   2,   2,   5,   1,   0,
   2,   2,   1,   2,   4,   5,   1,   1,   1,   1,
   2,   1,   1,   1,   1,   1,   4,   6,   4,   4,
  11,   1,   5,   3,   5,   3,   1,   2,   2,   1,
   2,   4,   4,   1,   2,   2,   2,   2,   2,   2,
   2,   1,   2,   1,   1,   1,   4,   4,   2,   4,
   2,   0,   1,   1,   3,   1,   3,   1,   0,   3,
   5,   4,   3,   5,   5,   5,   5,   5,   5,   2,
   2,   2,   2,   2,   2,   4,   4,   4,   4,   4,
   4,   4,   4,   5,   5,   5,   5,   4,   4,   4,
   4,   4,   4,   3,   2,   0,   1,   1,   2,   1,
   1,   1,   1,   4,   4,   5,   4,   4,   4,   7,
   7,   7,   7,   7,   7,   7,   7,   7,   7,   8,
   8,   8,   8,   7,   7,   7,   7,   7,   0,   2,
   2,   0,   2,   2,   0,   2,   0,   2,   0,   2,
   0,   2,   0,   2,   0,   2,   2,   0,   2,   3,
   2,   0,   2,   1,   1,   1,   1,   1,   1,   1,
   1,   1,   1,   1,   1,   1,   1,   2,   1,   2,
   2,   2,   2,   2,   2,   3,   2,   2,   2,   5,
   3,   2,   2,   2,   2,   2,   5,   4,   6,   2,
   4,   0,   3,   3,   1,   1,   0,   3,   0,   1,
   1,   3,   0,   1,   1,   3,   1,   3,   4,   4,
   4,   4,   5,   1,   1,   1,   1,   1,   1,   1,
   3,   1,   3,   4,   1,   0,  10,   6,   5,   6,
   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   1,   1,   2,   2,   2,   2,   1,   1,   1,   1,
   2,   3,   4,   6,   5,   1,   1,   1,   1,   1,
   1,   1,   2,   2,   1,   2,   2,   4,   1,   2,
   1,   2,   1,   2,   1,   2,   1,   2,   1,   1,
   0,   5,   0,   1,   1,   1,   1,   1,   1,   1,
   1,   1,   1,   1,   2,   2,   2,   2,   1,   1,
   1,   1,   1,   3,   2,   2,   1,   1,   1,   1,
   1,   1,   1,   1,   1,   2,   1,   1,   1,   1,
   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   1,   2,   1,   3,   2,   3,   4,   2,   2,   2,
   5,   5,   7,   4,   3,   2,   3,   2,   1,   1,
   2,   3,   2,   1,   2,   1,   1,   1,   1,   1,
   1,   1,   1,   1,   2,   2,   2,   2,   1,   1,
   1,   1,   1,   1,   3,   0,   1,   1,   3,   2,
   6,   7,   3,   3,   3,   6,   0,   1,   3,   5,
   6,   4,   4,   1,   3,   3,   1,   1,   1,   1,
   4,   1,   6,   6,   6,   4,   1,   1,   1,   1,
   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   1,   1,   1,   3,   2,   5,   4,   7,   6,   7,
   6,   9,   8,   3,   8,   4,   0,   2,   0,   1,
   3,   3,   0,   2,   2,   2,   3,   2,   2,   2,
   2,   2,   0,   2,   3,   1,   1,   1,   1,   3,
   8,   2,   3,   1,   1,   3,   3,   3,   4,   6,
   0,   2,   3,   1,   3,   1,   4,   3,   0,   2,
   2,   2,   3,   3,   3,   3,   3,   3,   0,   2,
   2,   3,   3,   4,   2,   1,   1,   3,   5,   0,
   2,   2,   0,   2,   4,   3,   1,   1 };
YYSTATIC YYCONST short YYFARDATA YYCHK[]={

-1000,-109,-110,-111,-113,-114,-116,-117,-118,-119,
-120,-121,-122,-124,-126,-128,-130,-131,-132, 524,
 525, 459, 527, 528,-133,-134,-135, 531, 532,-139,
 408,-152, 410,-170,-137, 454,-176, 462, 407, 469,
 470, 429, -87, 430, -93, -94, 273, 448, 529, 533,
 534, 535, 536, 537, 538, 539,  59,-138, 409, 411,
 453, 446, 447, 449, -10, -11, 123, 123,-115, 123,
 123, 123, 123,  -9, 264,  -9, 526, -88, -24, 265,
 264, -24, 123,-140, 314,  -1,  -2, 261, 260, 263,
 -78, -16,  91,-171, 123,-174, 278,  38,-175, 286,
 287, 284, 283, 282, 281, 288, -31, -32, 267,  91,
  -9, -90, 468, 468, -92,  -1, 468, -86, 431, 432,
 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
 443, 444, 445, -31, -86, 263, -28, -70, -74, -93,
 -94, 306, 297, 322, 323,-149,  33, 307, 276, 324,
 -52, 275,  91,  -5, -76, 268, 412, 413, 414, 357,
 356, 278, 298, 277, 281, 282, 283, 284, 286, 287,
 279, 290, 291, 292, 293, 271,  -1, 296,  -1,  -1,
  -1,  -1, 262, -77,-172, 318, 378,  61, -73,  40,
 -75,  -7, -76, 269, 272, 325, 340,  -8, 295, 300,
 302, 308, -31, -31,-112,-109, 125,-155, 415,-156,
 417,-154, 419, 420,-117,-157,  -2,-131,-120,-133,
-132,-135, 471, 457, 507,-158, 506,-160, 418, -95,
 -96, -97, -98, -99,-108,-100,-101,-102,-103,-104,
-105,-106,-107,-159,-163, 394, 395, 396, 397, 398,
 399, 400, 401, 402, 403, 404, 405, 406, 123, 416,
-123,-125,-127,-129,  -9,  -1, 460,-136, -70, -76,
-141, 315, -71, -70,  91, -28,-149,  46,  -7, 328,
 329, 330, 331, 332, 326, 346, 352, 337, 364, 365,
 366, 367, 368, 369, 370, 350, 377, 294, 371, -79,
  -9,-173,-174,  42,  40, -31,  40, -14,  91,  40,
 -14,  40, -14,  40, -14,  40, -14,  40, -14,  40,
  41, 267,  -9, 263,  58,  44, 262,  -1, 353, 354,
 355, 472, 378, 474, 475, 476, 477, -90, -91,  -1,
 329, 330,  -1, -71,  41, -36,  61, 288, 262,  44,
 389,  91,  38,  42, 358, 359, 360,  60, 389, 389,
 389, 389, -70, 306, -70, -75,  -7,  33,  -9,  -1,
 280, 279, 289, -28,  -1, -76,  42, 470,  47, -28,
 270, 272, 281, 282, 283, 284,  40, -36,  -1, 329,
 330, 322, 345, 334, 335, 337, 338, 339, 340, 341,
 342, 343, 344, 361, 354, 336, 351, 326, 370, 294,
  -2,  40,  61, -72, -71, -74, -28,  -7,  -7,  40,
 301, 303, 304, 305,  41,  41, 125,-143,-114,-111,
-144,-146,-116,-117,-131,-120,-132, 451, 452,-148,
 507,-133,-135, 506, 321, 421, 426, 471, 407, 125,
  -9,  -9,  40, 450,  58,  91,  -9, -71, 356, 363,
  91,-161,-162,-164,-166,-167,-168, 311,-169, 309,
 313, 312,  -9,  -2,  -9, -24,  40, -23, -24, 266,
 286, 287, -31,  -9,  -2, -75, -28, -76, 270, 272,
 -71, -36, 341,-175,  -7, -72,  40,-115,-158,  -2,
  -9, 125,-178, 461,-131,-179,-180, 466, 467,-181,
-132,-135, 463, 125,-183,-177,-179,-182, 338, 461,
 464, 125,-184, 459, 407, 462, 296,-132,-135, 125,
-185, 459, 462,-132,-135, -89, 419, 125,-136,-142,
 -71,  -1, 470,  -7,  -1, -13,  40,  40, -28, 328,
 329, 330, 331, 376, 370, 326, 478, 364, 365, 366,
 367, 374, 375, 294,  93, 125,  44,  40,  -2,  41,
 -23,  -9, -23, -24,  -9,  -9,  -9,  93,  -9,  -9,
 473,  -1,  -1, 330, 329, 327, 336, 389,  40,  61,
  43, 123,  40,  40, 263,  -1,  93, -30, -29, 275,
  -9,  40,  40, -54, -55, -28,  -1,  -1,  -1,  -1,
 -70, -28,  -9,  -1, 280,  93,  93,  93,  -1,  -1,
 -71,  -1,  91,  -9, -69,  60, 329, 330, 331, 364,
 365, 366,  40,  61, -36, 123,  40,  41, -71,  -3,
 372, 373,  -1,  -9,-115, 123, 123, 123,  -9,  -9,
 123, -71, 356, 363, 363, -81, -82, -91, -25, -26,
 -27, 275, -13,  40,  -9,  58, 274,  -7,  91,  -1,
  -9,-161,-165,-158, 310,-165,-165,-165, -71,-158,
  -2,  -9,  40,  40,  41, -71,  -1,  40, -31, -28,
  -6,  -2,  -9, 125, 316, 316, 465, -31, -66,  -9,
  42, -36,  61, -31,  61, -31, -31,  61,  61,  -1,
 468,  -9, 468,  40,  -1, 468,-177,  44,  93,  -1,
 -28, -28,  91,  -9, -36, -83,  -1,  40,  40,-173,
 -36,  41,  41,  93,  41,  41,  41,  41,  41, -12,
 263,  44,  58, 389, 329, 330, 331, 364, 365, 366,
  -1, -84, -85, -36, 123, 262, -64, -63, -71, 306,
  44,  93,  44, 275, -71, -71,  62,  44,  42,  -5,
  -5,  -5,  93, 274,  41, -68, -19, -18,  43,  45,
 306, 323, 372,  -9, -59, -61, -73, 274, -53, -22,
  60,  41, 125,-112,-145,-147,-127, 274,  -7,  91,
  -1, -71, -71,  -1, 370, 326,  -7, 370, 326,  -1,
  41,  44, -28, -25,  93,  -9,  -3,  -1, -28,  -9,
  93,  -2,  -9,  -9, -24, 274, -36,  41,  40,  41,
  44,  44,  -2,  -9,  -9,  41,  58,  40,  41,  40,
  41,  41,  40,  40,  -5,  -1,  -9, 317,  -1, -31,
 -71,  93, -38, 478, 503, 504, 505,  -9,  41, 389,
 -83,  41, 386, 341, 342, 343, 387, 388, 301, 303,
 304, 305, 390, 393, 294,  -4, 317, -34, -33,-153,
 479, 481, 482, 483, 484, 276, 277, 281, 282, 283,
 284, 286, 287, 257, 279, 290, 291, 292, 293, 485,
 486, 487, 489, 490, 491, 492, 493, 494, 495, 334,
 496, 280, 289, 336, 497, 341, 488, 356, 389, 501,
 271, 123,  -9,  41, -14, -14, -14, -14, -14, -14,
 317, 283, 284, 455, 456, 458,  -9,  -9,  -1,  41,
  44,  61, -59, 125,  44,  61, 263, 263, -29,  -9,
  41,  41, -28,  40,  -5,  -1,  62, -58,  -1,  40,
 -19,  41, 125, -62, -40,-135, -41, 298, 363, 297,
 286, 287, 284, 283, 282, 281, 293, 292, 291, 290,
 279, 278, 277,-175,  61,  -3,  40,  40,  91, -54,
 125, 125,-150, 422, 423, 424, 425,-120,-132,-133,
-135, 125,-151, 427, 428, 425,-132,-120,-133,-135,
 125,  -3, -28,  -9, -93, 449,  -1, -28, -27, -38,
  41, 389, -71,  93, -35,  61, 316, 316,  41,  41,
  -1,  41, -25,  -6,  -6, -66,  41,  -9,  41,  -3,
  40,  93,  93,  93,  93, -36,  41,  58,  58,  40,
 -35,  -2,  41,  42,  91, -32,  40, 480, 500, 277,
 281, 282, 283, 284, 280, -20,  40, -20, -20, -15,
 509, 482, 483, 276, 277, 281, 282, 283, 284, 286,
 287, 279, 290, 291, 292, 293,  42, 485, 486, 487,
 489, 490, 493, 494, 496, 280, 289, 257, 510, 511,
 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
 522, 495, 487, 499,  41,  -2, 263, 263,  44, -84,
 -37, -17,  -9, 283, -36, -70, 319, 320, 125, -64,
 123,  61, -25,  -1, -67,  44, -56, -57, -71, -65,
-135, 357, 362,  40,  91,  40,  91,  40,  91,  40,
  91,  40,  91,  40,  91,  40,  91,  40,  91,  40,
  91,  40,  91,  40,  91,  40,  91,  40,  91, 284,
 283, 282, 281,  40,  91,  40,  91, -31, -36, 123,
  40, -53, -22, -25, -25,  -9,  62, -75, -75, -75,
 -75, -75, -75, -75, 508, -71,  93,  -1,  -2,  -2,
 274, -39, -41, -36, 299, 286, 287, 284, 283, 282,
 281, 279, 293, 292, 291, 290, 278, 277,  -2,  -9,
  41,  58, -89, -69, -34, -83, 391, 392, 391, 392,
  -9,  93,  -9,  43, 125, -36,  91,  91, 502,  44,
  91, 523,  38, 281, 282, 283, 284, 280,  -9,  40,
  40, -62, 123,  41, -67, -68,  41,  44, -60, -52,
 363, 297, 345, 299, 263,  -9, 306, -70, 299,  -9,
 -40,  -9, -23,  -9,  -9, -23, -24,  -9, -24,  -9,
  -9,  -9,  -9,  -9,  -9,  -9, -24,  -9,  -9,  -9,
  -9,  -9,  -9,  -9,  40,  91,  40,  91,  40,  91,
  40,  91,  -9,  -9, -17,  -9,  41, -59,  40,  40,
  41,  41,  93,  -7, 274,  40,  -3, 284, 283, 282,
 281, -66,  40,  41,  41,  41,  93,  43,  -9,  44,
  -9,  -9,  61, -36,  93, 263,  -9, 281, 282, 283,
  -9, 125, -62, -71,  -1,  91, 306, -70,  41,  41,
  93, 263,  41,  41,  93,  41,  93,  41,  41,  93,
  41,  41,  93,  41,  93,  41,  93,  41,  93,  41,
  93,  41,  93,  41,  93,  41,  93,  41,  93, -24,
  -9,  -9,  -9,  -9,  -9,  -9,  -9,  41,  93,  41,
  93, 125, -25, -25,  62, -28,  -3, -25, -21, -22,
  60,  58, -25,  -9,  93, -36,  93,  93,  -9,  41,
  58,  58,  58,  41, 125,  61,  93, 263,  40,  41,
  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
  40,  40,  41,  93,  41,  93,  41,  93,  41,  93,
  40,  40,  41,  41, -71, -21,  41,  40, -66,  41,
  93,  44,  41, -33,  41,  -9,  -9,  -9, -40, -49,
 -50, -51, -42, -43, -47, -46, -45, -44, -47, -46,
 -45, -44,  40,  40,  40,  40, -45, -48, 274,  40,
 -35, -25, -80, -36,  41,  41,  41,  41, 299, 263,
  41, 299, 306, -70,  41, -40,  41, -23,  -9,  41,
 -23, -24,  41, -24,  41,  -9,  41,  -9,  41,  -9,
  41,  41,  41,  41, -47, -46, -45, -44,  41,  41,
 -17,  -3, -25,  41, 123, 324, 378, 379, 380, 308,
 381, 382, 383, 384, 333, 347, 348, 349, 294,  44,
 263,  41,  41,  41,  41,  40,  41,  40, -36, -25,
 508,  -9,  41,  41, 356,  41,  -7, -28, -71, 274,
  -3, -21,  40, -25,  41 };
YYSTATIC YYCONST short YYFARDATA YYDEF[]={

   1,  -2,   2,   0,   0, 329,   6,   7,   8,   9,
  10,  11,   0,   0,   0,   0,  16,  17,  18,   0,
   0, 766,   0,   0,  24,  25,  26,   0,  28, 135,
   0, 266, 204,   0, 425,   0,   0, 772, 105, 829,
  92,   0, 425,   0,  83,  84,  85,   0,   0,   0,
   0,   0,   0,  57,  58,   0,  60, 108, 259, 381,
   0, 751, 752, 217, 425, 425, 139,   1,   0, 782,
 800, 818, 832,  19,  41,  20,   0,   0,  22,  42,
  43,  23,  29, 137,   0, 104,  38,  39,  36,  37,
 217, 184,   0, 378,   0, 385,   0,   0, 425, 388,
 388, 388, 388, 388, 388,   0,   0, 426, 427,   0,
 754,   0, 772, 808,   0,  93,   0,   0, 736, 737,
 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
 748, 749, 750,   0,   0,  33,   0,   0,   0,   0,
   0,   0, 662,   0,   0, 217,   0, 678, 679,   0,
 683,   0,   0, 543, 230, 545, 546, 547, 548,   0,
 483, 685, 686, 687, 688, 689, 690, 691, 692, 693,
   0, 698, 699, 700, 701, 702, 549,   0,  52,  54,
  55,  56,  59,   0, 380, 382, 383,   0,  61,   0,
  71,   0, 210, 211, 212, 217, 217, 215,   0, 218,
 219,   0,   0,   0,   0,   0,   5, 330,   0, 332,
   0,   0, 336, 337, 338, 339,   0, 341, 342, 343,
 344, 345,   0,   0,   0, 351,   0,   0, 328, 498,
   0,   0,   0,   0, 425,   0, 217,   0,   0,   0,
 217,   0,   0, 329,   0, 484, 485, 486, 487, 488,
 489, 490, 491, 492, 493, 494, 495, 496, 356, 363,
   0,   0,   0,   0,  21, 768, 767,   0,  29, 544,
 107,   0, 136, 551,   0, 554, 217,   0, 308, 267,
 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
 278, 279, 280, 281, 282, 283, 284,   0,   0,   0,
   0,   0, 387,   0,   0,   0,   0, 399,   0,   0,
 400,   0, 401,   0, 402,   0, 403,   0, 404, 424,
 102, 428,   0, 753,   0,   0, 763, 771, 773, 774,
 775,   0, 777, 778, 779, 780, 781,   0,   0, 827,
 830, 831,  94, 712, 713, 714,   0,   0,  31,   0,
   0, 705, 667, 668, 669,   0,   0, 528,   0,   0,
   0,   0, 661,   0, 664, 225,   0,   0, 675, 677,
 680,   0, 682, 684,   0,   0,   0,   0,   0,   0,
 228, 229, 694, 695, 696, 697,   0,  53, 147, 109,
 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
 120, 121, 122, 123, 124,   0, 131, 132, 133,   0,
   0, 103,   0,   0,  72,  73,   0, 213, 214,   0,
 220, 221, 222, 223,  64,  68,   3, 140, 329,   0,
   0,   0, 168, 169, 170, 171, 172,   0,   0,   0,
   0, 178, 179,   0,   0, 233, 247, 808, 105,   4,
 331, 333,  -2,   0, 340,   0,   0,   0, 217,   0,
   0, 357, 359,   0,   0,   0,   0,   0,   0, 373,
 374, 371, 499, 500, 501, 502, 497, 503, 504,  44,
   0,   0,   0, 506, 507, 508,   0, 511, 512, 513,
 514, 515,   0, 425,   0, 519, 521,   0, 360,   0,
   0,  12, 783,   0, 785, 786, 425,   0,   0, 425,
 793, 794,   0,  13, 801, 425, 803, 425, 805,   0,
   0,  14, 819,   0,   0,   0,   0, 825, 826,  15,
 833,   0,   0, 836, 837, 765, 769,  27,  30, 138,
 142,   0,   0,   0,  40,   0,   0, 289,   0, 185,
 186, 187, 188, 189, 190, 191,   0, 193, 194, 195,
 196, 197, 198,   0, 205, 384,   0,   0,   0, 392,
   0,   0,   0,   0,   0,   0,   0,  96, 756,   0,
 776, 798, 806, 809, 810, 811,   0,   0,   0,   0,
   0, 716, 721, 722,  34,  47, 665,   0, 703, 706,
 707,   0,   0,   0, 529, 530,  48,  49,  50,  51,
 663,   0, 674, 676, 681,   0,   0,   0,   0, 550,
   0,  -2, 705,   0, 106, 154, 125, 126, 127, 128,
 129, 130,   0, 379,  62,  75,  69, 217,   0, 526,
 305, 306,  -2,   0,   0, 139, 236, 250, 173, 174,
 818,   0, 217,   0,   0,   0, 217,   0,   0, 533,
 534, 536,   0,  -2,   0,   0,   0,   0,   0, 353,
   0, 358, 364, 375,   0, 365, 366, 367, 372, 368,
 369, 370,   0,   0, 505,   0,  -2,   0,   0,   0,
   0, 524, 525, 355,   0,   0,   0,   0,   0, 787,
 788, 791,   0,   0,   0,   0,   0,   0,   0, 820,
   0, 824,   0,   0,   0,   0, 425,   0, 552,   0,
   0, 260,   0,   0, 289,   0, 200, 555,   0, 386,
   0, 391, 388, 389, 388, 388, 388, 388, 388,   0,
 755,   0,   0,   0, 812, 813, 814, 815, 816, 817,
 828,   0, 723,   0,  75,  32,   0, 717,   0,   0,
   0, 666, 705, 709,   0,   0, 673,   0, 668, 539,
 540, 541,   0,   0, 224,   0,   0, 154, 149, 150,
 151, 152, 153,   0,   0,  78,  65,   0,   0,   0,
 528, 216, 164,   0,   0,   0,   0,   0,   0,   0,
 181,   0,   0,  -2, 234, 235,   0, 248, 249, 807,
 334, 308, 260,   0, 346, 348, 349, 307,   0,   0,
 202,   0,   0,   0,   0,   0,   0, 517,  -2, 520,
 521, 521, 361, 362, 784, 789,   0, 797, 792, 795,
 802, 804, 770, 796, 821, 822,   0,   0, 835,   0,
 141, 553,   0,   0,   0,   0,   0,   0, 285,   0,
   0, 288, 290, 291, 292, 293, 294, 295, 296, 297,
 298, 299,   0,   0,   0, 202,   0,   0, 262,   0,
   0,   0, 560, 561, 562, 563, 564, 565, 566, 567,
 568, 569, 570, 571,   0, 576, 577, 578, 579, 585,
 586, 587, 588, 589, 590, 591, 610, 610, 594, 610,
 612, 598, 600,   0, 602,   0, 604, 606,   0, 608,
 609, 264,   0, 390, 393, 394, 395, 396, 397, 398,
   0,  97,  98,  99, 100, 101, 758, 760, 799, 710,
   0,   0,   0, 715, 716,   0,  37,  35, 704, 708,
 670, 671, 531,  -2, 542, 226, 148,   0, 158, 143,
 155, 134,  63,  74,  76,  77, 432,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0, 425,   0, 526,  -2,  -2,   0,   0,
 165, 166, 237, 217, 217, 217, 217, 242, 243, 244,
 245, 167, 251, 217, 217, 217, 255, 256, 257, 258,
 175,   0,   0,   0, 182, 217, 231,   0, 535, 537,
 335,   0,   0, 352, 354,   0,   0,   0,  45,  46,
 509, 516,   0, 522, 523,   0, 823, 834, 768, 147,
 555, 309, 310, 311, 312, 289, 287,   0,   0,   0,
 183, 201, 192, 580,   0,   0,   0,   0,   0, 605,
 572, 573, 574, 575, 599, 592,   0, 593, 595, 596,
 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
 623,   0, 628, 629, 630, 631, 632, 636, 637, 638,
 639, 640, 641, 642, 643, 644, 646, 647, 648, 649,
 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
 660, 601, 603, 607, 199,  95, 757, 759,   0, 724,
 725, 728, 729,   0, 731,   0, 726, 727, 711, 718,
  78,   0,   0, 158, 157, 154,   0, 144, 145,   0,
  80,  81,  82,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,  66,  75,
  70,   0,   0,   0,   0,   0, 527, 238, 239, 240,
 241, 252, 253, 254, 217,   0, 180,   0, 538, 347,
   0, 203, 429, 430, 431,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0, 376, 377,
 518,   0, 764,   0,   0,   0, 300, 301, 302, 303,
   0, 581,   0,   0, 263,   0,   0,   0,   0,   0,
   0, 634, 635, 624, 625, 626, 627, 645, 762,   0,
   0,   0,  78, 672, 156, 159, 160,   0,   0,  86,
  87,  88,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0, 423,   0,  -2,  -2,
 208, 209,   0,   0,   0,  -2, 161,   0,   0,   0,
   0,   0,  -2, 261, 286, 304, 582,   0,   0,   0,
   0,   0,   0, 597, 633, 761,   0,   0,   0,   0,
   0, 719,   0, 146,   0,   0,   0,  90, 433, 434,
   0,   0, 436, 437,   0, 438,   0, 405, 407,   0,
 406, 408,   0, 409,   0, 410,   0, 411,   0, 412,
   0, 417,   0, 418,   0, 419,   0, 420,   0,   0,
   0,   0,   0,   0,   0,   0,   0, 421,   0, 422,
   0,  67,   0,   0, 163,   0, 161,   0,   0, 162,
   0,   0,   0,   0, 584,   0, 558, 555,   0, 730,
   0,   0,   0, 735, 720,   0,  91,  89, 474, 435,
 477, 481, 458, 461, 464, 466, 468, 470, 464, 466,
 468, 470, 413,   0, 414,   0, 415,   0, 416,   0,
 468, 472, 206, 207,   0,   0, 202,  -2, 790, 313,
 583,   0, 557, 559, 611,   0,   0,   0,  79,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0, 464, 466, 468, 470,   0,   0,   0,  -2,
 246,   0,   0,   0, 732, 733, 734, 455, 475, 476,
 456, 478,   0, 480, 457, 482, 439, 459, 460, 440,
 462, 463, 441, 465, 442, 467, 443, 469, 444, 471,
 445, 446, 447, 448,   0,   0,   0,   0, 453, 454,
 473,   0,   0, 350, 265, 314, 315, 316, 317, 318,
 319, 320, 321, 322, 323, 324, 325, 326,   0,   0,
 479, 449, 450, 451, 452,  -2,   0,   0,   0,   0,
   0,   0, 556, 176, 217, 327,   0,   0,   0,   0,
 161,   0,  -2,   0, 177 };
#ifdef YYRECOVER
YYSTATIC YYCONST short yyrecover[] = {
-1000
};
#endif

/* SCCSWHAT( "@(#)yypars.c	3.1 88/11/16 22:00:49	" ) */
#line 3 "O:\\tfs\\cgm\\src\\Tools\\devdiv\\amd64\\yypars.c"
#if ! defined(YYAPI_PACKAGE)
/*
**  YYAPI_TOKENNAME		: name used for return value of yylex	
**	YYAPI_TOKENTYPE		: type of the token
**	YYAPI_TOKENEME(t)	: the value of the token that the parser should see
**	YYAPI_TOKENNONE		: the representation when there is no token
**	YYAPI_VALUENAME		: the name of the value of the token
**	YYAPI_VALUETYPE		: the type of the value of the token (if null, then the value is derivable from the token itself)
**	YYAPI_VALUEOF(v)	: how to get the value of the token.
*/
#define	YYAPI_TOKENNAME		yychar
#define	YYAPI_TOKENTYPE		int
#define	YYAPI_TOKENEME(t)	(t)
#define	YYAPI_TOKENNONE		-1
#define	YYAPI_TOKENSTR(t)	(sprintf_s(yytokbuf, _countof(yytokbuf), "%d", t), yytokbuf)
#define	YYAPI_VALUENAME		yylval
#define	YYAPI_VALUETYPE		YYSTYPE
#define	YYAPI_VALUEOF(v)	(v)
#endif
#if ! defined(YYAPI_CALLAFTERYYLEX)
#define	YYAPI_CALLAFTERYYLEX
#endif

# define YYFLAG -1000
# define YYERROR goto yyerrlab
# define YYACCEPT return(0)
# define YYABORT return(1)

#ifdef YYDEBUG				/* RRR - 10/9/85 */
char yytokbuf[20];
# ifndef YYDBFLG
#  define YYDBFLG (yydebug)
# endif
# define yyprintf(a, b, c, d) if (YYDBFLG) YYPRINT(a, b, c, d)
#else
# define yyprintf(a, b, c, d)
#endif

#ifndef YYPRINT
#define	YYPRINT	printf
#endif

/*	parser for yacc output	*/

#ifdef YYDUMP
int yydump = 1; /* 1 for dumping */
void yydumpinfo(void);
#endif
#ifdef YYDEBUG
YYSTATIC int yydebug = 0; /* 1 for debugging */
#endif
YYSTATIC YYSTYPE yyv[YYMAXDEPTH];	/* where the values are stored */
YYSTATIC short	yys[YYMAXDEPTH];	/* the parse stack */

#if ! defined(YYRECURSIVE)
YYSTATIC YYAPI_TOKENTYPE	YYAPI_TOKENNAME = YYAPI_TOKENNONE;
#if defined(YYAPI_VALUETYPE)
// YYSTATIC YYAPI_VALUETYPE	YYAPI_VALUENAME;	 FIX 
#endif
YYSTATIC int yynerrs = 0;			/* number of errors */
YYSTATIC short yyerrflag = 0;		/* error recovery flag */
#endif

#ifdef YYRECOVER
/*
**  yyscpy : copy f onto t and return a ptr to the null terminator at the
**  end of t.
*/
YYSTATIC	char	*yyscpy(register char*t, register char*f)
	{
	while(*t = *f++)
		t++;
	return(t);	/*  ptr to the null char  */
	}
#endif

#ifndef YYNEAR
#define YYNEAR
#endif
#ifndef YYPASCAL
#define YYPASCAL
#endif
#ifndef YYLOCAL
#define YYLOCAL
#endif
#if ! defined YYPARSER
#define YYPARSER yyparse
#endif
#if ! defined YYLEX
#define YYLEX yylex
#endif

#if defined(YYRECURSIVE)

	YYSTATIC YYAPI_TOKENTYPE	YYAPI_TOKENNAME = YYAPI_TOKENNONE;
  #if defined(YYAPI_VALUETYPE)
	YYSTATIC YYAPI_VALUETYPE	YYAPI_VALUENAME;  
  #endif
	YYSTATIC int yynerrs = 0;			/* number of errors */
	YYSTATIC short yyerrflag = 0;		/* error recovery flag */

	YYSTATIC short	yyn;
	YYSTATIC short	yystate = 0;
#ifdef _PREFAST_
#pragma warning(push)
#pragma warning(disable: 6200) // Index '-1' is out of valid index range...for non-stack buffer...
#endif
    YYSTATIC short	*yyps= &yys[-1];
	YYSTATIC YYSTYPE	*yypv= &yyv[-1];
#ifdef _PREFAST_
#pragma warning(pop)
#endif
    YYSTATIC short	yyj;
	YYSTATIC short	yym;

#endif

#pragma warning(disable:102)
YYLOCAL YYNEAR YYPASCAL YYPARSER()
{
#if ! defined(YYRECURSIVE)

	register	short	yyn;
	short		yystate, *yyps;
	YYSTYPE		*yypv;
	short		yyj, yym;

	YYAPI_TOKENNAME = YYAPI_TOKENNONE;
	yystate = 0;

#ifdef _PREFAST_
#pragma warning(push)
#pragma warning(disable:6200) // Index '-1' is out of valid index range...for non-stack buffer...
#endif
    yyps= &yys[-1];
    yypv= &yyv[-1];
#ifdef _PREFAST_
#pragma warning(pop)
#endif

#endif

#ifdef YYDUMP
	yydumpinfo();
#endif
 yystack:	 /* put a state and value onto the stack */

#ifdef YYDEBUG
	if(YYAPI_TOKENNAME == YYAPI_TOKENNONE) {
		yyprintf( "state %d, token # '%d'\n", yystate, -1, 0 );
		}
	else {
		yyprintf( "state %d, token # '%s'\n", yystate, YYAPI_TOKENSTR(YYAPI_TOKENNAME), 0 );
		}
#endif
	if( ++yyps > &yys[YYMAXDEPTH] ) {
		yyerror( "yacc stack overflow" );
		return(1);
	}
	*yyps = yystate;
	++yypv;

	*yypv = yyval;

yynewstate:

	yyn = YYPACT[yystate];

	if( yyn <= YYFLAG ) {	/*  simple state, no lookahead  */
		goto yydefault;
	}
	if( YYAPI_TOKENNAME == YYAPI_TOKENNONE ) {	/*  need a lookahead */
		YYAPI_TOKENNAME = YYLEX();
		YYAPI_CALLAFTERYYLEX(YYAPI_TOKENNAME);
	}
	if( ((yyn += YYAPI_TOKENEME(YYAPI_TOKENNAME)) < 0) || (yyn >= YYLAST) ) {
		goto yydefault;
	}
	if( YYCHK[ yyn = YYACT[ yyn ] ] == YYAPI_TOKENEME(YYAPI_TOKENNAME) ) {		/* valid shift */
		yyval = YYAPI_VALUEOF(YYAPI_VALUENAME);
		yystate = yyn;
 		yyprintf( "SHIFT: saw token '%s', now in state %4d\n", YYAPI_TOKENSTR(YYAPI_TOKENNAME), yystate, 0 );
		YYAPI_TOKENNAME = YYAPI_TOKENNONE;
		if( yyerrflag > 0 ) {
			--yyerrflag;
		}
		goto yystack;
	}

 yydefault:
	/* default state action */

	if( (yyn = YYDEF[yystate]) == -2 ) {
		register	YYCONST short	*yyxi;

		if( YYAPI_TOKENNAME == YYAPI_TOKENNONE ) {
			YYAPI_TOKENNAME = YYLEX();
			YYAPI_CALLAFTERYYLEX(YYAPI_TOKENNAME);
 			yyprintf("LOOKAHEAD: token '%s'\n", YYAPI_TOKENSTR(YYAPI_TOKENNAME), 0, 0);
		}
/*
**  search exception table, we find a -1 followed by the current state.
**  if we find one, we'll look through terminal,state pairs. if we find
**  a terminal which matches the current one, we have a match.
**  the exception table is when we have a reduce on a terminal.
*/

#if YYOPTTIME
		yyxi = yyexca + yyexcaind[yystate];
		while(( *yyxi != YYAPI_TOKENEME(YYAPI_TOKENNAME) ) && ( *yyxi >= 0 )){
			yyxi += 2;
		}
#else
		for(yyxi = yyexca;
			(*yyxi != (-1)) || (yyxi[1] != yystate);
			yyxi += 2
		) {
			; /* VOID */
			}

		while( *(yyxi += 2) >= 0 ){
			if( *yyxi == YYAPI_TOKENEME(YYAPI_TOKENNAME) ) {
				break;
				}
		}
#endif
		if( (yyn = yyxi[1]) < 0 ) {
			return(0);   /* accept */
			}
		}

	if( yyn == 0 ){ /* error */
		/* error ... attempt to resume parsing */

		switch( yyerrflag ){

		case 0:		/* brand new error */
#ifdef YYRECOVER
			{
			register	int		i,j;

			for(i = 0;
				(yyrecover[i] != -1000) && (yystate > yyrecover[i]);
				i += 3
			) {
				;
			}
			if(yystate == yyrecover[i]) {
				yyprintf("recovered, from state %d to state %d on token # %d\n",
						yystate,yyrecover[i+2],yyrecover[i+1]
						);
				j = yyrecover[i + 1];
				if(j < 0) {
				/*
				**  here we have one of the injection set, so we're not quite
				**  sure that the next valid thing will be a shift. so we'll
				**  count it as an error and continue.
				**  actually we're not absolutely sure that the next token
				**  we were supposed to get is the one when j > 0. for example,
				**  for(+) {;} error recovery with yyerrflag always set, stops
				**  after inserting one ; before the +. at the point of the +,
				**  we're pretty sure the guy wants a 'for' loop. without
				**  setting the flag, when we're almost absolutely sure, we'll
				**  give him one, since the only thing we can shift on this
				**  error is after finding an expression followed by a +
				*/
					yyerrflag++;
					j = -j;
					}
				if(yyerrflag <= 1) {	/*  only on first insertion  */
					yyrecerr(YYAPI_TOKENNAME, j);	/*  what was, what should be first */
				}
				yyval = yyeval(j);
				yystate = yyrecover[i + 2];
				goto yystack;
				}
			}
#endif
		yyerror("syntax error");

		yyerrlab:
			++yynerrs;

		case 1:
		case 2: /* incompletely recovered error ... try again */

			yyerrflag = 3;

			/* find a state where "error" is a legal shift action */

			while ( yyps >= yys ) {
			   yyn = YYPACT[*yyps] + YYERRCODE;
			   if( yyn>= 0 && yyn < YYLAST && YYCHK[YYACT[yyn]] == YYERRCODE ){
			      yystate = YYACT[yyn];  /* simulate a shift of "error" */
 				  yyprintf( "SHIFT 'error': now in state %4d\n", yystate, 0, 0 );
			      goto yystack;
			      }
			   yyn = YYPACT[*yyps];

			   /* the current yyps has no shift onn "error", pop stack */

 			   yyprintf( "error recovery pops state %4d, uncovers %4d\n", *yyps, yyps[-1], 0 );
			   --yyps;
			   --yypv;
			   }

			/* there is no state on the stack with an error shift ... abort */

	yyabort:
			return(1);


		case 3:  /* no shift yet; clobber input char */

 			yyprintf( "error recovery discards token '%s'\n", YYAPI_TOKENSTR(YYAPI_TOKENNAME), 0, 0 );

			if( YYAPI_TOKENEME(YYAPI_TOKENNAME) == 0 ) goto yyabort; /* don't discard EOF, quit */
			YYAPI_TOKENNAME = YYAPI_TOKENNONE;
			goto yynewstate;   /* try again in the same state */
			}
		}

	/* reduction by production yyn */
yyreduce:
		{
		register	YYSTYPE	*yypvt;
		yypvt = yypv;
		yyps -= YYR2[yyn];
		yypv -= YYR2[yyn];
		yyval = yypv[1];
 		yyprintf("REDUCE: rule %4d, popped %2d tokens, uncovered state %4d, ",yyn, YYR2[yyn], *yyps);
		yym = yyn;
		yyn = YYR1[yyn];		/* consult goto table to find next state */
		yyj = YYPGO[yyn] + *yyps + 1;
		if( (yyj >= YYLAST) || (YYCHK[ yystate = YYACT[yyj] ] != -yyn) ) {
			yystate = YYACT[YYPGO[yyn]];
			}
 		yyprintf("goto state %4d\n", yystate, 0, 0);
#ifdef YYDUMP
		yydumpinfo();
#endif
		switch(yym){
			
case 3:
#line 189 "asmparse.y"
{ PASM->EndClass(); } break;
case 4:
#line 190 "asmparse.y"
{ PASM->EndNameSpace(); } break;
case 5:
#line 191 "asmparse.y"
{ if(PASM->m_pCurMethod->m_ulLines[1] ==0)
                                                                                  {  PASM->m_pCurMethod->m_ulLines[1] = PASM->m_ulCurLine;
                                                                                     PASM->m_pCurMethod->m_ulColumns[1]=PASM->m_ulCurColumn;}
                                                                                  PASM->EndMethod(); } break;
case 12:
#line 201 "asmparse.y"
{ PASMM->EndAssembly(); } break;
case 13:
#line 202 "asmparse.y"
{ PASMM->EndAssembly(); } break;
case 14:
#line 203 "asmparse.y"
{ PASMM->EndComType(); } break;
case 15:
#line 204 "asmparse.y"
{ PASMM->EndManifestRes(); } break;
case 19:
#line 208 "asmparse.y"
{ 
#ifdef _PREFAST_
#pragma warning(push)
#pragma warning(disable:22011) // Suppress PREFast warning about integer overflow/underflow
#endif
                                                                                  PASM->m_dwSubsystem = yypvt[-0].int32;
#ifdef _PREFAST_
#pragma warning(pop)
#endif
                                                                                } break;
case 20:
#line 218 "asmparse.y"
{ PASM->m_dwComImageFlags = yypvt[-0].int32; } break;
case 21:
#line 219 "asmparse.y"
{ PASM->m_dwFileAlignment = yypvt[-0].int32; 
                                                                                  if((yypvt[-0].int32 & (yypvt[-0].int32 - 1))||(yypvt[-0].int32 < 0x200)||(yypvt[-0].int32 > 0x10000))
                                                                                    PASM->report->error("Invalid file alignment, must be power of 2 from 0x200 to 0x10000\n");} break;
case 22:
#line 222 "asmparse.y"
{ PASM->m_stBaseAddress = (ULONGLONG)(*(yypvt[-0].int64)); delete yypvt[-0].int64; 
                                                                                  if(PASM->m_stBaseAddress & 0xFFFF)
                                                                                    PASM->report->error("Invalid image base, must be 0x10000-aligned\n");} break;
case 23:
#line 225 "asmparse.y"
{ PASM->m_stSizeOfStackReserve = (size_t)(*(yypvt[-0].int64)); delete yypvt[-0].int64; } break;
case 28:
#line 230 "asmparse.y"
{ PASM->m_fIsMscorlib = TRUE; } break;
case 31:
#line 237 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 32:
#line 238 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
case 33:
#line 241 "asmparse.y"
{ LPCSTRToGuid(yypvt[-0].string,&(PASM->m_guidLang)); } break;
case 34:
#line 242 "asmparse.y"
{ LPCSTRToGuid(yypvt[-2].string,&(PASM->m_guidLang)); 
                                                                                  LPCSTRToGuid(yypvt[-0].string,&(PASM->m_guidLangVendor));} break;
case 35:
#line 244 "asmparse.y"
{ LPCSTRToGuid(yypvt[-4].string,&(PASM->m_guidLang)); 
                                                                                  LPCSTRToGuid(yypvt[-2].string,&(PASM->m_guidLangVendor));
                                                                                  LPCSTRToGuid(yypvt[-2].string,&(PASM->m_guidDoc));} break;
case 36:
#line 249 "asmparse.y"
{ yyval.string = yypvt[-0].string; } break;
case 37:
#line 250 "asmparse.y"
{ yyval.string = yypvt[-0].string; } break;
case 38:
#line 253 "asmparse.y"
{ yyval.string = yypvt[-0].string; } break;
case 39:
#line 254 "asmparse.y"
{ yyval.string = yypvt[-0].string; } break;
case 40:
#line 255 "asmparse.y"
{ yyval.string = newStringWDel(yypvt[-2].string, '.', yypvt[-0].string); } break;
case 41:
#line 258 "asmparse.y"
{ yyval.int32 = yypvt[-0].int32; } break;
case 42:
#line 261 "asmparse.y"
{ yyval.int64 = yypvt[-0].int64; } break;
case 43:
#line 262 "asmparse.y"
{ yyval.int64 = neg ? new __int64(yypvt[-0].int32) : new __int64((unsigned)yypvt[-0].int32); } break;
case 44:
#line 265 "asmparse.y"
{ yyval.float64 = yypvt[-0].float64; } break;
case 45:
#line 266 "asmparse.y"
{ float f; *((__int32*) (&f)) = yypvt[-1].int32; yyval.float64 = new double(f); } break;
case 46:
#line 267 "asmparse.y"
{ yyval.float64 = (double*) yypvt[-1].int64; } break;
case 47:
#line 271 "asmparse.y"
{ PASM->AddTypeDef(yypvt[-2].binstr,yypvt[-0].string); } break;
case 48:
#line 272 "asmparse.y"
{ PASM->AddTypeDef(yypvt[-2].token,yypvt[-0].string); } break;
case 49:
#line 273 "asmparse.y"
{ PASM->AddTypeDef(yypvt[-2].token,yypvt[-0].string); } break;
case 50:
#line 274 "asmparse.y"
{ yypvt[-2].cad->tkOwner = 0; PASM->AddTypeDef(yypvt[-2].cad,yypvt[-0].string); } break;
case 51:
#line 275 "asmparse.y"
{ PASM->AddTypeDef(yypvt[-2].cad,yypvt[-0].string); } break;
case 52:
#line 280 "asmparse.y"
{ DefineVar(yypvt[-0].string, NULL); } break;
case 53:
#line 281 "asmparse.y"
{ DefineVar(yypvt[-1].string, yypvt[-0].binstr); } break;
case 54:
#line 282 "asmparse.y"
{ UndefVar(yypvt[-0].string); } break;
case 55:
#line 283 "asmparse.y"
{ SkipToken = !IsVarDefined(yypvt[-0].string);
                                                                                  IfEndif++;
                                                                                } break;
case 56:
#line 286 "asmparse.y"
{ SkipToken = IsVarDefined(yypvt[-0].string);
                                                                                  IfEndif++;
                                                                                } break;
case 57:
#line 289 "asmparse.y"
{ if(IfEndif == 1) SkipToken = !SkipToken;} break;
case 58:
#line 290 "asmparse.y"
{ if(IfEndif == 0)
                                                                                    PASM->report->error("Unmatched #endif\n");
                                                                                  else IfEndif--;
                                                                                } break;
case 59:
#line 294 "asmparse.y"
{ _ASSERTE(!"yylex should have dealt with this"); } break;
case 60:
#line 295 "asmparse.y"
{ } break;
case 61:
#line 299 "asmparse.y"
{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-0].token, NULL); } break;
case 62:
#line 300 "asmparse.y"
{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-2].token, yypvt[-0].binstr); } break;
case 63:
#line 301 "asmparse.y"
{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-4].token, yypvt[-1].binstr); } break;
case 64:
#line 302 "asmparse.y"
{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-2].int32, yypvt[-1].binstr); } break;
case 65:
#line 305 "asmparse.y"
{ yyval.cad = new CustomDescr(yypvt[-2].token, yypvt[-0].token, NULL); } break;
case 66:
#line 306 "asmparse.y"
{ yyval.cad = new CustomDescr(yypvt[-4].token, yypvt[-2].token, yypvt[-0].binstr); } break;
case 67:
#line 308 "asmparse.y"
{ yyval.cad = new CustomDescr(yypvt[-6].token, yypvt[-4].token, yypvt[-1].binstr); } break;
case 68:
#line 309 "asmparse.y"
{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-2].int32, yypvt[-1].binstr); } break;
case 69:
#line 312 "asmparse.y"
{ yyval.int32 = yypvt[-2].token; bParsingByteArray = TRUE; } break;
case 70:
#line 316 "asmparse.y"
{ PASM->m_pCustomDescrList = NULL;
                                                                                  PASM->m_tkCurrentCVOwner = yypvt[-4].token;
                                                                                  yyval.int32 = yypvt[-2].token; bParsingByteArray = TRUE; } break;
case 71:
#line 321 "asmparse.y"
{ yyval.token = yypvt[-0].token; } break;
case 72:
#line 324 "asmparse.y"
{ yyval.token = yypvt[-0].token; } break;
case 73:
#line 325 "asmparse.y"
{ yyval.token = yypvt[-0].token; } break;
case 74:
#line 329 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; 
                                                                                  yyval.binstr->appendInt16(nCustomBlobNVPairs);
                                                                                  yyval.binstr->append(yypvt[-0].binstr);
                                                                                  nCustomBlobNVPairs = 0; } break;
case 75:
#line 335 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt16(VAL16(0x0001)); } break;
case 76:
#line 336 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr;
                                                                                  yyval.binstr->appendFrom(yypvt[-0].binstr, (*(yypvt[-0].binstr->ptr()) == ELEMENT_TYPE_SZARRAY) ? 2 : 1); } break;
case 77:
#line 338 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; } break;
case 78:
#line 341 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 79:
#line 343 "asmparse.y"
{ yyval.binstr = yypvt[-5].binstr; yyval.binstr->appendInt8(yypvt[-4].int32);
                                                                                  yyval.binstr->append(yypvt[-3].binstr); 
                                                                                  AppendStringWithLength(yyval.binstr,yypvt[-2].string);
                                                                                  yyval.binstr->appendFrom(yypvt[-0].binstr, (*(yypvt[-0].binstr->ptr()) == ELEMENT_TYPE_SZARRAY) ? 2 : 1);
                                                                                  nCustomBlobNVPairs++; } break;
case 80:
#line 348 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; } break;
case 81:
#line 351 "asmparse.y"
{ yyval.int32 = SERIALIZATION_TYPE_FIELD; } break;
case 82:
#line 352 "asmparse.y"
{ yyval.int32 = SERIALIZATION_TYPE_PROPERTY; } break;
case 83:
#line 355 "asmparse.y"
{ if(yypvt[-0].cad->tkOwner && !yypvt[-0].cad->tkInterfacePair) 
                                                                                    PASM->DefineCV(yypvt[-0].cad);
                                                                                  else if(PASM->m_pCustomDescrList)
                                                                                    PASM->m_pCustomDescrList->PUSH(yypvt[-0].cad); } break;
case 84:
#line 359 "asmparse.y"
{ PASM->DefineCV(yypvt[-0].cad); } break;
case 85:
#line 360 "asmparse.y"
{ CustomDescr* pNew = new CustomDescr(yypvt[-0].tdd->m_pCA);
                                                                                  if(pNew->tkOwner == 0) pNew->tkOwner = PASM->m_tkCurrentCVOwner;
                                                                                  if(pNew->tkOwner) 
                                                                                    PASM->DefineCV(pNew);
                                                                                  else if(PASM->m_pCustomDescrList)
                                                                                    PASM->m_pCustomDescrList->PUSH(pNew); } break;
case 86:
#line 368 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 87:
#line 369 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TYPE); } break;
case 88:
#line 370 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TAGGED_OBJECT); } break;
case 89:
#line 371 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
                                                                AppendStringWithLength(yyval.binstr,yypvt[-0].string); } break;
case 90:
#line 373 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
                                                                AppendStringWithLength(yyval.binstr,PASM->ReflectionNotation(yypvt[-0].token)); } break;
case 91:
#line 375 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 92:
#line 380 "asmparse.y"
{ PASMM->SetModuleName(NULL); PASM->m_tkCurrentCVOwner=1; } break;
case 93:
#line 381 "asmparse.y"
{ PASMM->SetModuleName(yypvt[-0].string); PASM->m_tkCurrentCVOwner=1; } break;
case 94:
#line 382 "asmparse.y"
{ BinStr* pbs = new BinStr();
                                                                                  unsigned L = (unsigned)strlen(yypvt[-0].string);
                                                                                  memcpy((char*)(pbs->getBuff(L)),yypvt[-0].string,L);
                                                                                  PASM->EmitImport(pbs); delete pbs;} break;
case 95:
#line 389 "asmparse.y"
{ /*PASM->SetDataSection(); PASM->EmitDataLabel($7);*/
                                                                                  PASM->m_VTFList.PUSH(new VTFEntry((USHORT)yypvt[-4].int32, (USHORT)yypvt[-2].int32, yypvt[-0].string)); } break;
case 96:
#line 393 "asmparse.y"
{ yyval.int32 = 0; } break;
case 97:
#line 394 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_32BIT; } break;
case 98:
#line 395 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_64BIT; } break;
case 99:
#line 396 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_FROM_UNMANAGED; } break;
case 100:
#line 397 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_CALL_MOST_DERIVED; } break;
case 101:
#line 398 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_FROM_UNMANAGED_RETAIN_APPDOMAIN; } break;
case 102:
#line 401 "asmparse.y"
{ PASM->m_pVTable = yypvt[-1].binstr; } break;
case 103:
#line 404 "asmparse.y"
{ bParsingByteArray = TRUE; } break;
case 104:
#line 408 "asmparse.y"
{ PASM->StartNameSpace(yypvt[-0].string); } break;
case 105:
#line 411 "asmparse.y"
{ newclass = TRUE; } break;
case 106:
#line 414 "asmparse.y"
{ if(yypvt[-0].typarlist) FixupConstraints();
                                                                                  PASM->StartClass(yypvt[-1].string, yypvt[-2].classAttr, yypvt[-0].typarlist); 
                                                                                  TyParFixupList.RESET(false);
                                                                                  newclass = FALSE;
                                                                                } break;
case 107:
#line 420 "asmparse.y"
{ PASM->AddClass(); } break;
case 108:
#line 423 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) 0; } break;
case 109:
#line 424 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdVisibilityMask) | tdPublic); } break;
case 110:
#line 425 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdVisibilityMask) | tdNotPublic); } break;
case 111:
#line 426 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | 0x80000000 | tdSealed); } break;
case 112:
#line 427 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | 0x40000000); } break;
case 113:
#line 428 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdInterface | tdAbstract); } break;
case 114:
#line 429 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdSealed); } break;
case 115:
#line 430 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdAbstract); } break;
case 116:
#line 431 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdLayoutMask) | tdAutoLayout); } break;
case 117:
#line 432 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdLayoutMask) | tdSequentialLayout); } break;
case 118:
#line 433 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdLayoutMask) | tdExplicitLayout); } break;
case 119:
#line 434 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdStringFormatMask) | tdAnsiClass); } break;
case 120:
#line 435 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdStringFormatMask) | tdUnicodeClass); } break;
case 121:
#line 436 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdStringFormatMask) | tdAutoClass); } break;
case 122:
#line 437 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdImport); } break;
case 123:
#line 438 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdSerializable); } break;
case 124:
#line 439 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdWindowsRuntime); } break;
case 125:
#line 440 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedPublic); } break;
case 126:
#line 441 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedPrivate); } break;
case 127:
#line 442 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedFamily); } break;
case 128:
#line 443 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedAssembly); } break;
case 129:
#line 444 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedFamANDAssem); } break;
case 130:
#line 445 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedFamORAssem); } break;
case 131:
#line 446 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdBeforeFieldInit); } break;
case 132:
#line 447 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdSpecialName); } break;
case 133:
#line 448 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr); } break;
case 134:
#line 449 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].int32); } break;
case 136:
#line 453 "asmparse.y"
{ PASM->m_crExtends = yypvt[-0].token; } break;
case 141:
#line 464 "asmparse.y"
{ PASM->AddToImplList(yypvt[-0].token); } break;
case 142:
#line 465 "asmparse.y"
{ PASM->AddToImplList(yypvt[-0].token); } break;
case 143:
#line 469 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 144:
#line 470 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 145:
#line 473 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(yypvt[-0].token); } break;
case 146:
#line 474 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->appendInt32(yypvt[-0].token); } break;
case 147:
#line 477 "asmparse.y"
{ yyval.typarlist = NULL; PASM->m_TyParList = NULL;} break;
case 148:
#line 478 "asmparse.y"
{ yyval.typarlist = yypvt[-1].typarlist;   PASM->m_TyParList = yypvt[-1].typarlist;} break;
case 149:
#line 481 "asmparse.y"
{ yyval.int32 = gpCovariant; } break;
case 150:
#line 482 "asmparse.y"
{ yyval.int32 = gpContravariant; } break;
case 151:
#line 483 "asmparse.y"
{ yyval.int32 = gpReferenceTypeConstraint; } break;
case 152:
#line 484 "asmparse.y"
{ yyval.int32 = gpNotNullableValueTypeConstraint; } break;
case 153:
#line 485 "asmparse.y"
{ yyval.int32 = gpDefaultConstructorConstraint; } break;
case 154:
#line 488 "asmparse.y"
{ yyval.int32 = 0; } break;
case 155:
#line 489 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | yypvt[-0].int32; } break;
case 156:
#line 492 "asmparse.y"
{yyval.typarlist = new TyParList(yypvt[-3].int32, yypvt[-2].binstr, yypvt[-1].string, yypvt[-0].typarlist);} break;
case 157:
#line 493 "asmparse.y"
{yyval.typarlist = new TyParList(yypvt[-2].int32, NULL, yypvt[-1].string, yypvt[-0].typarlist);} break;
case 158:
#line 496 "asmparse.y"
{ yyval.typarlist = NULL; } break;
case 159:
#line 497 "asmparse.y"
{ yyval.typarlist = yypvt[-0].typarlist; } break;
case 160:
#line 500 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; } break;
case 161:
#line 503 "asmparse.y"
{ yyval.int32= 0; } break;
case 162:
#line 504 "asmparse.y"
{ yyval.int32 = yypvt[-0].int32; } break;
case 163:
#line 507 "asmparse.y"
{ yyval.int32 = yypvt[-2].int32; } break;
case 164:
#line 511 "asmparse.y"
{ if(PASM->m_pCurMethod->m_ulLines[1] ==0)
                                                              {  PASM->m_pCurMethod->m_ulLines[1] = PASM->m_ulCurLine;
                                                                 PASM->m_pCurMethod->m_ulColumns[1]=PASM->m_ulCurColumn;}
                                                              PASM->EndMethod(); } break;
case 165:
#line 515 "asmparse.y"
{ PASM->EndClass(); } break;
case 166:
#line 516 "asmparse.y"
{ PASM->EndEvent(); } break;
case 167:
#line 517 "asmparse.y"
{ PASM->EndProp(); } break;
case 173:
#line 523 "asmparse.y"
{ PASM->m_pCurClass->m_ulSize = yypvt[-0].int32; } break;
case 174:
#line 524 "asmparse.y"
{ PASM->m_pCurClass->m_ulPack = yypvt[-0].int32; } break;
case 175:
#line 525 "asmparse.y"
{ PASMM->EndComType(); } break;
case 176:
#line 527 "asmparse.y"
{ BinStr *sig1 = parser->MakeSig(yypvt[-7].int32, yypvt[-6].binstr, yypvt[-1].binstr); 
                                                                  BinStr *sig2 = new BinStr(); sig2->append(sig1); 
                                                                  PASM->AddMethodImpl(yypvt[-11].token,yypvt[-9].string,sig1,yypvt[-5].token,yypvt[-3].string,sig2);
                                                                  PASM->ResetArgNameList(); 
                                                                } break;
case 177:
#line 533 "asmparse.y"
{ PASM->AddMethodImpl(yypvt[-17].token,yypvt[-15].string,
                                                                      (yypvt[-14].int32==0 ? parser->MakeSig(yypvt[-19].int32,yypvt[-18].binstr,yypvt[-12].binstr) :
                                                                      parser->MakeSig(yypvt[-19].int32| IMAGE_CEE_CS_CALLCONV_GENERIC,yypvt[-18].binstr,yypvt[-12].binstr,yypvt[-14].int32)),
                                                                      yypvt[-6].token,yypvt[-4].string,
                                                                      (yypvt[-3].int32==0 ? parser->MakeSig(yypvt[-8].int32,yypvt[-7].binstr,yypvt[-1].binstr) :
                                                                      parser->MakeSig(yypvt[-8].int32| IMAGE_CEE_CS_CALLCONV_GENERIC,yypvt[-7].binstr,yypvt[-1].binstr,yypvt[-3].int32))); 
                                                                   PASM->ResetArgNameList();
                                                                 } break;
case 180:
#line 543 "asmparse.y"
{ if((yypvt[-1].int32 > 0) && (yypvt[-1].int32 <= (int)PASM->m_pCurClass->m_NumTyPars))
                                                                PASM->m_pCustomDescrList = PASM->m_pCurClass->m_TyPars[yypvt[-1].int32-1].CAList();
                                                              else
                                                                PASM->report->error("Type parameter index out of range\n");
                                                            } break;
case 181:
#line 548 "asmparse.y"
{ int n = PASM->m_pCurClass->FindTyPar(yypvt[-0].string);
                                                              if(n >= 0)
                                                                PASM->m_pCustomDescrList = PASM->m_pCurClass->m_TyPars[n].CAList();
                                                              else
                                                                PASM->report->error("Type parameter '%s' undefined\n",yypvt[-0].string);
                                                            } break;
case 182:
#line 554 "asmparse.y"
{ yypvt[-0].cad->tkInterfacePair = yypvt[-1].token;     
                                                                        if(PASM->m_pCustomDescrList)
                                                                            PASM->m_pCustomDescrList->PUSH(yypvt[-0].cad);
                                                                      } break;
case 183:
#line 562 "asmparse.y"
{ yypvt[-3].binstr->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD);
                                                              PASM->AddField(yypvt[-2].string, yypvt[-3].binstr, yypvt[-4].fieldAttr, yypvt[-1].string, yypvt[-0].binstr, yypvt[-5].int32); } break;
case 184:
#line 566 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) 0; } break;
case 185:
#line 567 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdStatic); } break;
case 186:
#line 568 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdPublic); } break;
case 187:
#line 569 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdPrivate); } break;
case 188:
#line 570 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdFamily); } break;
case 189:
#line 571 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdInitOnly); } break;
case 190:
#line 572 "asmparse.y"
{ yyval.fieldAttr = yypvt[-1].fieldAttr; } break;
case 191:
#line 573 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdSpecialName); } break;
case 192:
#line 586 "asmparse.y"
{ PASM->m_pMarshal = yypvt[-1].binstr; } break;
case 193:
#line 587 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdAssembly); } break;
case 194:
#line 588 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdFamANDAssem); } break;
case 195:
#line 589 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdFamORAssem); } break;
case 196:
#line 590 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdPrivateScope); } break;
case 197:
#line 591 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdLiteral); } break;
case 198:
#line 592 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdNotSerialized); } break;
case 199:
#line 593 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].int32); } break;
case 200:
#line 596 "asmparse.y"
{ yyval.string = 0; } break;
case 201:
#line 597 "asmparse.y"
{ yyval.string = yypvt[-0].string; } break;
case 202:
#line 600 "asmparse.y"
{ yyval.binstr = NULL; } break;
case 203:
#line 601 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 204:
#line 604 "asmparse.y"
{ yyval.int32 = 0xFFFFFFFF; } break;
case 205:
#line 605 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32; } break;
case 206:
#line 610 "asmparse.y"
{ PASM->ResetArgNameList();
                                                               if (yypvt[-3].binstr == NULL)
                                                               {
                                                                 if((iCallConv)&&((yypvt[-8].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n"); 
                                                                 yyval.token = PASM->MakeMemberRef(yypvt[-6].token, yypvt[-4].string, parser->MakeSig(yypvt[-8].int32|iCallConv, yypvt[-7].binstr, yypvt[-1].binstr));
                                                               }
                                                               else
                                                               {
                                                                 mdToken mr;
                                                                 if((iCallConv)&&((yypvt[-8].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n"); 
                                                                 mr = PASM->MakeMemberRef(yypvt[-6].token, yypvt[-4].string, 
                                                                   parser->MakeSig(yypvt[-8].int32 | IMAGE_CEE_CS_CALLCONV_GENERIC|iCallConv, yypvt[-7].binstr, yypvt[-1].binstr, corCountArgs(yypvt[-3].binstr)));
                                                                 yyval.token = PASM->MakeMethodSpec(mr, 
                                                                   parser->MakeSig(IMAGE_CEE_CS_CALLCONV_INSTANTIATION, 0, yypvt[-3].binstr));
                                                               }
                                                             } break;
case 207:
#line 627 "asmparse.y"
{ PASM->ResetArgNameList();
                                                               if((iCallConv)&&((yypvt[-8].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n"); 
                                                               yyval.token = PASM->MakeMemberRef(yypvt[-6].token, yypvt[-4].string, 
                                                                 parser->MakeSig(yypvt[-8].int32 | IMAGE_CEE_CS_CALLCONV_GENERIC|iCallConv, yypvt[-7].binstr, yypvt[-1].binstr, yypvt[-3].int32));
                                                             } break;
case 208:
#line 633 "asmparse.y"
{ PASM->ResetArgNameList();
                                                               if (yypvt[-3].binstr == NULL)
                                                               {
                                                                 if((iCallConv)&&((yypvt[-6].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n"); 
                                                                 yyval.token = PASM->MakeMemberRef(mdTokenNil, yypvt[-4].string, parser->MakeSig(yypvt[-6].int32|iCallConv, yypvt[-5].binstr, yypvt[-1].binstr));
                                                               }
                                                               else
                                                               {
                                                                 mdToken mr;
                                                                 if((iCallConv)&&((yypvt[-6].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n"); 
                                                                 mr = PASM->MakeMemberRef(mdTokenNil, yypvt[-4].string, parser->MakeSig(yypvt[-6].int32 | IMAGE_CEE_CS_CALLCONV_GENERIC|iCallConv, yypvt[-5].binstr, yypvt[-1].binstr, corCountArgs(yypvt[-3].binstr)));
                                                                 yyval.token = PASM->MakeMethodSpec(mr, 
                                                                   parser->MakeSig(IMAGE_CEE_CS_CALLCONV_INSTANTIATION, 0, yypvt[-3].binstr));
                                                               }
                                                             } break;
case 209:
#line 649 "asmparse.y"
{ PASM->ResetArgNameList();
                                                               if((iCallConv)&&((yypvt[-6].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n"); 
                                                               yyval.token = PASM->MakeMemberRef(mdTokenNil, yypvt[-4].string, parser->MakeSig(yypvt[-6].int32 | IMAGE_CEE_CS_CALLCONV_GENERIC|iCallConv, yypvt[-5].binstr, yypvt[-1].binstr, yypvt[-3].int32));
                                                             } break;
case 210:
#line 653 "asmparse.y"
{ yyval.token = yypvt[-0].token; } break;
case 211:
#line 654 "asmparse.y"
{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec; } break;
case 212:
#line 655 "asmparse.y"
{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec; } break;
case 213:
#line 658 "asmparse.y"
{ yyval.int32 = (yypvt[-0].int32 | IMAGE_CEE_CS_CALLCONV_HASTHIS); } break;
case 214:
#line 659 "asmparse.y"
{ yyval.int32 = (yypvt[-0].int32 | IMAGE_CEE_CS_CALLCONV_EXPLICITTHIS); } break;
case 215:
#line 660 "asmparse.y"
{ yyval.int32 = yypvt[-0].int32; } break;
case 216:
#line 661 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32; } break;
case 217:
#line 664 "asmparse.y"
{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_DEFAULT; } break;
case 218:
#line 665 "asmparse.y"
{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_DEFAULT; } break;
case 219:
#line 666 "asmparse.y"
{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_VARARG; } break;
case 220:
#line 667 "asmparse.y"
{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_C; } break;
case 221:
#line 668 "asmparse.y"
{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_STDCALL; } break;
case 222:
#line 669 "asmparse.y"
{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_THISCALL; } break;
case 223:
#line 670 "asmparse.y"
{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_FASTCALL; } break;
case 224:
#line 673 "asmparse.y"
{ yyval.token = yypvt[-1].int32; } break;
case 225:
#line 676 "asmparse.y"
{ yyval.token = yypvt[-0].token; 
                                                               PASM->delArgNameList(PASM->m_firstArgName);
                                                               PASM->m_firstArgName = parser->m_ANSFirst.POP();
                                                               PASM->m_lastArgName = parser->m_ANSLast.POP();
                                                               PASM->SetMemberRefFixup(yypvt[-0].token,iOpcodeLen); } break;
case 226:
#line 682 "asmparse.y"
{ yypvt[-3].binstr->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD); 
                                                               yyval.token = PASM->MakeMemberRef(yypvt[-2].token, yypvt[-0].string, yypvt[-3].binstr); 
                                                               PASM->SetMemberRefFixup(yyval.token,iOpcodeLen); } break;
case 227:
#line 686 "asmparse.y"
{ yypvt[-1].binstr->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD); 
                                                               yyval.token = PASM->MakeMemberRef(NULL, yypvt[-0].string, yypvt[-1].binstr); 
                                                               PASM->SetMemberRefFixup(yyval.token,iOpcodeLen); } break;
case 228:
#line 689 "asmparse.y"
{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec;
                                                               PASM->SetMemberRefFixup(yyval.token,iOpcodeLen); } break;
case 229:
#line 691 "asmparse.y"
{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec;
                                                               PASM->SetMemberRefFixup(yyval.token,iOpcodeLen); } break;
case 230:
#line 693 "asmparse.y"
{ yyval.token = yypvt[-0].token; 
                                                               PASM->SetMemberRefFixup(yyval.token,iOpcodeLen); } break;
case 231:
#line 698 "asmparse.y"
{ PASM->ResetEvent(yypvt[-0].string, yypvt[-1].token, yypvt[-2].eventAttr); } break;
case 232:
#line 699 "asmparse.y"
{ PASM->ResetEvent(yypvt[-0].string, mdTypeRefNil, yypvt[-1].eventAttr); } break;
case 233:
#line 703 "asmparse.y"
{ yyval.eventAttr = (CorEventAttr) 0; } break;
case 234:
#line 704 "asmparse.y"
{ yyval.eventAttr = yypvt[-1].eventAttr; } break;
case 235:
#line 705 "asmparse.y"
{ yyval.eventAttr = (CorEventAttr) (yypvt[-1].eventAttr | evSpecialName); } break;
case 238:
#line 712 "asmparse.y"
{ PASM->SetEventMethod(0, yypvt[-0].token); } break;
case 239:
#line 713 "asmparse.y"
{ PASM->SetEventMethod(1, yypvt[-0].token); } break;
case 240:
#line 714 "asmparse.y"
{ PASM->SetEventMethod(2, yypvt[-0].token); } break;
case 241:
#line 715 "asmparse.y"
{ PASM->SetEventMethod(3, yypvt[-0].token); } break;
case 246:
#line 724 "asmparse.y"
{ PASM->ResetProp(yypvt[-4].string, 
                                                              parser->MakeSig((IMAGE_CEE_CS_CALLCONV_PROPERTY |
                                                              (yypvt[-6].int32 & IMAGE_CEE_CS_CALLCONV_HASTHIS)),yypvt[-5].binstr,yypvt[-2].binstr), yypvt[-7].propAttr, yypvt[-0].binstr);} break;
case 247:
#line 729 "asmparse.y"
{ yyval.propAttr = (CorPropertyAttr) 0; } break;
case 248:
#line 730 "asmparse.y"
{ yyval.propAttr = yypvt[-1].propAttr; } break;
case 249:
#line 731 "asmparse.y"
{ yyval.propAttr = (CorPropertyAttr) (yypvt[-1].propAttr | prSpecialName); } break;
case 252:
#line 739 "asmparse.y"
{ PASM->SetPropMethod(0, yypvt[-0].token); } break;
case 253:
#line 740 "asmparse.y"
{ PASM->SetPropMethod(1, yypvt[-0].token); } break;
case 254:
#line 741 "asmparse.y"
{ PASM->SetPropMethod(2, yypvt[-0].token); } break;
case 259:
#line 749 "asmparse.y"
{ PASM->ResetForNextMethod(); 
                                                              uMethodBeginLine = PASM->m_ulCurLine;
                                                              uMethodBeginColumn=PASM->m_ulCurColumn;
                                                            } break;
case 260:
#line 755 "asmparse.y"
{ yyval.binstr = NULL; } break;
case 261:
#line 756 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; } break;
case 262:
#line 759 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 263:
#line 760 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; } break;
case 264:
#line 763 "asmparse.y"
{ bParsingByteArray = TRUE; } break;
case 265:
#line 767 "asmparse.y"
{ BinStr* sig;
                                                              if (yypvt[-5].typarlist == NULL) sig = parser->MakeSig(yypvt[-10].int32, yypvt[-8].binstr, yypvt[-3].binstr);
                                                              else {
                                                               FixupTyPars(yypvt[-8].binstr);
                                                               sig = parser->MakeSig(yypvt[-10].int32 | IMAGE_CEE_CS_CALLCONV_GENERIC, yypvt[-8].binstr, yypvt[-3].binstr, yypvt[-5].typarlist->Count());
                                                               FixupConstraints();
                                                              }
                                                              PASM->StartMethod(yypvt[-6].string, sig, yypvt[-11].methAttr, yypvt[-7].binstr, yypvt[-9].int32, yypvt[-5].typarlist);
                                                              TyParFixupList.RESET(false);
                                                              PASM->SetImplAttr((USHORT)yypvt[-1].implAttr);  
                                                              PASM->m_pCurMethod->m_ulLines[0] = uMethodBeginLine;
                                                              PASM->m_pCurMethod->m_ulColumns[0]=uMethodBeginColumn; 
                                                            } break;
case 266:
#line 782 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) 0; } break;
case 267:
#line 783 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdStatic); } break;
case 268:
#line 784 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdPublic); } break;
case 269:
#line 785 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdPrivate); } break;
case 270:
#line 786 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdFamily); } break;
case 271:
#line 787 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdFinal); } break;
case 272:
#line 788 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdSpecialName); } break;
case 273:
#line 789 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdVirtual); } break;
case 274:
#line 790 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdCheckAccessOnOverride); } break;
case 275:
#line 791 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdAbstract); } break;
case 276:
#line 792 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdAssem); } break;
case 277:
#line 793 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdFamANDAssem); } break;
case 278:
#line 794 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdFamORAssem); } break;
case 279:
#line 795 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdPrivateScope); } break;
case 280:
#line 796 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdHideBySig); } break;
case 281:
#line 797 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdNewSlot); } break;
case 282:
#line 798 "asmparse.y"
{ yyval.methAttr = yypvt[-1].methAttr; } break;
case 283:
#line 799 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdUnmanagedExport); } break;
case 284:
#line 800 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdRequireSecObject); } break;
case 285:
#line 801 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].int32); } break;
case 286:
#line 803 "asmparse.y"
{ PASM->SetPinvoke(yypvt[-4].binstr,0,yypvt[-2].binstr,yypvt[-1].pinvAttr); 
                                                              yyval.methAttr = (CorMethodAttr) (yypvt[-7].methAttr | mdPinvokeImpl); } break;
case 287:
#line 806 "asmparse.y"
{ PASM->SetPinvoke(yypvt[-2].binstr,0,NULL,yypvt[-1].pinvAttr); 
                                                              yyval.methAttr = (CorMethodAttr) (yypvt[-5].methAttr | mdPinvokeImpl); } break;
case 288:
#line 809 "asmparse.y"
{ PASM->SetPinvoke(new BinStr(),0,NULL,yypvt[-1].pinvAttr); 
                                                              yyval.methAttr = (CorMethodAttr) (yypvt[-4].methAttr | mdPinvokeImpl); } break;
case 289:
#line 813 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) 0; } break;
case 290:
#line 814 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmNoMangle); } break;
case 291:
#line 815 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCharSetAnsi); } break;
case 292:
#line 816 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCharSetUnicode); } break;
case 293:
#line 817 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCharSetAuto); } break;
case 294:
#line 818 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmSupportsLastError); } break;
case 295:
#line 819 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvWinapi); } break;
case 296:
#line 820 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvCdecl); } break;
case 297:
#line 821 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvStdcall); } break;
case 298:
#line 822 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvThiscall); } break;
case 299:
#line 823 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvFastcall); } break;
case 300:
#line 824 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-3].pinvAttr | pmBestFitEnabled); } break;
case 301:
#line 825 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-3].pinvAttr | pmBestFitDisabled); } break;
case 302:
#line 826 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-3].pinvAttr | pmThrowOnUnmappableCharEnabled); } break;
case 303:
#line 827 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-3].pinvAttr | pmThrowOnUnmappableCharDisabled); } break;
case 304:
#line 828 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].int32); } break;
case 305:
#line 831 "asmparse.y"
{ yyval.string = newString(COR_CTOR_METHOD_NAME); } break;
case 306:
#line 832 "asmparse.y"
{ yyval.string = newString(COR_CCTOR_METHOD_NAME); } break;
case 307:
#line 833 "asmparse.y"
{ yyval.string = yypvt[-0].string; } break;
case 308:
#line 836 "asmparse.y"
{ yyval.int32 = 0; } break;
case 309:
#line 837 "asmparse.y"
{ yyval.int32 = yypvt[-3].int32 | pdIn; } break;
case 310:
#line 838 "asmparse.y"
{ yyval.int32 = yypvt[-3].int32 | pdOut; } break;
case 311:
#line 839 "asmparse.y"
{ yyval.int32 = yypvt[-3].int32 | pdOptional; } break;
case 312:
#line 840 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 + 1; } break;
case 313:
#line 843 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (miIL | miManaged); } break;
case 314:
#line 844 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFF4) | miNative); } break;
case 315:
#line 845 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFF4) | miIL); } break;
case 316:
#line 846 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFF4) | miOPTIL); } break;
case 317:
#line 847 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFFB) | miManaged); } break;
case 318:
#line 848 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFFB) | miUnmanaged); } break;
case 319:
#line 849 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miForwardRef); } break;
case 320:
#line 850 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miPreserveSig); } break;
case 321:
#line 851 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miRuntime); } break;
case 322:
#line 852 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miInternalCall); } break;
case 323:
#line 853 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miSynchronized); } break;
case 324:
#line 854 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miNoInlining); } break;
case 325:
#line 855 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miAggressiveInlining); } break;
case 326:
#line 856 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miNoOptimization); } break;
case 327:
#line 857 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].int32); } break;
case 328:
#line 860 "asmparse.y"
{ PASM->delArgNameList(PASM->m_firstArgName); PASM->m_firstArgName = NULL;PASM->m_lastArgName = NULL; 
                                                            } break;
case 331:
#line 868 "asmparse.y"
{ PASM->EmitByte(yypvt[-0].int32); } break;
case 332:
#line 869 "asmparse.y"
{ delete PASM->m_SEHD; PASM->m_SEHD = PASM->m_SEHDstack.POP(); } break;
case 333:
#line 870 "asmparse.y"
{ PASM->EmitMaxStack(yypvt[-0].int32); } break;
case 334:
#line 871 "asmparse.y"
{ PASM->EmitLocals(parser->MakeSig(IMAGE_CEE_CS_CALLCONV_LOCAL_SIG, 0, yypvt[-1].binstr)); 
                                                            } break;
case 335:
#line 873 "asmparse.y"
{ PASM->EmitZeroInit(); 
                                                              PASM->EmitLocals(parser->MakeSig(IMAGE_CEE_CS_CALLCONV_LOCAL_SIG, 0, yypvt[-1].binstr)); 
                                                            } break;
case 336:
#line 876 "asmparse.y"
{ PASM->EmitEntryPoint(); } break;
case 337:
#line 877 "asmparse.y"
{ PASM->EmitZeroInit(); } break;
case 340:
#line 880 "asmparse.y"
{ PASM->AddLabel(PASM->m_CurPC,yypvt[-1].string); /*PASM->EmitLabel($1);*/ } break;
case 346:
#line 886 "asmparse.y"
{ if(PASM->m_pCurMethod->m_dwExportOrdinal == 0xFFFFFFFF)
                                                              {
                                                                PASM->m_pCurMethod->m_dwExportOrdinal = yypvt[-1].int32;
                                                                PASM->m_pCurMethod->m_szExportAlias = NULL;
                                                                if(PASM->m_pCurMethod->m_wVTEntry == 0) PASM->m_pCurMethod->m_wVTEntry = 1;
                                                                if(PASM->m_pCurMethod->m_wVTSlot  == 0) PASM->m_pCurMethod->m_wVTSlot = yypvt[-1].int32 + 0x8000;
                                                              }
                                                              else
                                                                PASM->report->warn("Duplicate .export directive, ignored\n");
                                                            } break;
case 347:
#line 896 "asmparse.y"
{ if(PASM->m_pCurMethod->m_dwExportOrdinal == 0xFFFFFFFF)
                                                              {
                                                                PASM->m_pCurMethod->m_dwExportOrdinal = yypvt[-3].int32;
                                                                PASM->m_pCurMethod->m_szExportAlias = yypvt[-0].string;
                                                                if(PASM->m_pCurMethod->m_wVTEntry == 0) PASM->m_pCurMethod->m_wVTEntry = 1;
                                                                if(PASM->m_pCurMethod->m_wVTSlot  == 0) PASM->m_pCurMethod->m_wVTSlot = yypvt[-3].int32 + 0x8000;
                                                              }
                                                              else
                                                                PASM->report->warn("Duplicate .export directive, ignored\n");
                                                            } break;
case 348:
#line 906 "asmparse.y"
{ PASM->m_pCurMethod->m_wVTEntry = (WORD)yypvt[-2].int32;
                                                              PASM->m_pCurMethod->m_wVTSlot = (WORD)yypvt[-0].int32; } break;
case 349:
#line 909 "asmparse.y"
{ PASM->AddMethodImpl(yypvt[-2].token,yypvt[-0].string,NULL,NULL,NULL,NULL); } break;
case 350:
#line 912 "asmparse.y"
{ PASM->AddMethodImpl(yypvt[-6].token,yypvt[-4].string,
                                                              (yypvt[-3].int32==0 ? parser->MakeSig(yypvt[-8].int32,yypvt[-7].binstr,yypvt[-1].binstr) :
                                                              parser->MakeSig(yypvt[-8].int32| IMAGE_CEE_CS_CALLCONV_GENERIC,yypvt[-7].binstr,yypvt[-1].binstr,yypvt[-3].int32))
                                                              ,NULL,NULL,NULL); 
                                                              PASM->ResetArgNameList();
                                                            } break;
case 352:
#line 919 "asmparse.y"
{ if((yypvt[-1].int32 > 0) && (yypvt[-1].int32 <= (int)PASM->m_pCurMethod->m_NumTyPars))
                                                                PASM->m_pCustomDescrList = PASM->m_pCurMethod->m_TyPars[yypvt[-1].int32-1].CAList();
                                                              else
                                                                PASM->report->error("Type parameter index out of range\n");
                                                            } break;
case 353:
#line 924 "asmparse.y"
{ int n = PASM->m_pCurMethod->FindTyPar(yypvt[-0].string);
                                                              if(n >= 0)
                                                                PASM->m_pCustomDescrList = PASM->m_pCurMethod->m_TyPars[n].CAList();
                                                              else
                                                                PASM->report->error("Type parameter '%s' undefined\n",yypvt[-0].string);
                                                            } break;
case 354:
#line 931 "asmparse.y"
{ if( yypvt[-2].int32 ) {
                                                                ARG_NAME_LIST* pAN=PASM->findArg(PASM->m_pCurMethod->m_firstArgName, yypvt[-2].int32 - 1);
                                                                if(pAN)
                                                                {
                                                                    PASM->m_pCustomDescrList = &(pAN->CustDList);
                                                                    pAN->pValue = yypvt[-0].binstr;
                                                                }
                                                                else
                                                                {
                                                                    PASM->m_pCustomDescrList = NULL;
                                                                    if(yypvt[-0].binstr) delete yypvt[-0].binstr;
                                                                }
                                                              } else {
                                                                PASM->m_pCustomDescrList = &(PASM->m_pCurMethod->m_RetCustDList);
                                                                PASM->m_pCurMethod->m_pRetValue = yypvt[-0].binstr;
                                                              }
                                                              PASM->m_tkCurrentCVOwner = 0;
                                                            } break;
case 355:
#line 951 "asmparse.y"
{ PASM->m_pCurMethod->CloseScope(); } break;
case 356:
#line 954 "asmparse.y"
{ PASM->m_pCurMethod->OpenScope(); } break;
case 360:
#line 965 "asmparse.y"
{ PASM->m_SEHD->tryTo = PASM->m_CurPC; } break;
case 361:
#line 966 "asmparse.y"
{ PASM->SetTryLabels(yypvt[-2].string, yypvt[-0].string); } break;
case 362:
#line 967 "asmparse.y"
{ if(PASM->m_SEHD) {PASM->m_SEHD->tryFrom = yypvt[-2].int32;
                                                              PASM->m_SEHD->tryTo = yypvt[-0].int32;} } break;
case 363:
#line 971 "asmparse.y"
{ PASM->NewSEHDescriptor();
                                                              PASM->m_SEHD->tryFrom = PASM->m_CurPC; } break;
case 364:
#line 976 "asmparse.y"
{ PASM->EmitTry(); } break;
case 365:
#line 977 "asmparse.y"
{ PASM->EmitTry(); } break;
case 366:
#line 978 "asmparse.y"
{ PASM->EmitTry(); } break;
case 367:
#line 979 "asmparse.y"
{ PASM->EmitTry(); } break;
case 368:
#line 983 "asmparse.y"
{ PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
case 369:
#line 984 "asmparse.y"
{ PASM->SetFilterLabel(yypvt[-0].string); 
                                                               PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
case 370:
#line 986 "asmparse.y"
{ PASM->m_SEHD->sehFilter = yypvt[-0].int32; 
                                                               PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
case 371:
#line 990 "asmparse.y"
{ PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_FILTER;
                                                               PASM->m_SEHD->sehFilter = PASM->m_CurPC; } break;
case 372:
#line 994 "asmparse.y"
{  PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_NONE;
                                                               PASM->SetCatchClass(yypvt[-0].token); 
                                                               PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
case 373:
#line 999 "asmparse.y"
{ PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_FINALLY;
                                                               PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
case 374:
#line 1003 "asmparse.y"
{ PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_FAULT;
                                                               PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
case 375:
#line 1007 "asmparse.y"
{ PASM->m_SEHD->sehHandlerTo = PASM->m_CurPC; } break;
case 376:
#line 1008 "asmparse.y"
{ PASM->SetHandlerLabels(yypvt[-2].string, yypvt[-0].string); } break;
case 377:
#line 1009 "asmparse.y"
{ PASM->m_SEHD->sehHandler = yypvt[-2].int32;
                                                               PASM->m_SEHD->sehHandlerTo = yypvt[-0].int32; } break;
case 379:
#line 1017 "asmparse.y"
{ PASM->EmitDataLabel(yypvt[-1].string); } break;
case 381:
#line 1021 "asmparse.y"
{ PASM->SetDataSection(); } break;
case 382:
#line 1022 "asmparse.y"
{ PASM->SetTLSSection(); } break;
case 383:
#line 1023 "asmparse.y"
{ PASM->SetILSection(); } break;
case 388:
#line 1034 "asmparse.y"
{ yyval.int32 = 1; } break;
case 389:
#line 1035 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32;
                                                               if(yypvt[-1].int32 <= 0) { PASM->report->error("Illegal item count: %d\n",yypvt[-1].int32);
                                                                  if(!PASM->OnErrGo) yyval.int32 = 1; }} break;
case 390:
#line 1040 "asmparse.y"
{ PASM->EmitDataString(yypvt[-1].binstr); } break;
case 391:
#line 1041 "asmparse.y"
{ PASM->EmitDD(yypvt[-1].string); } break;
case 392:
#line 1042 "asmparse.y"
{ PASM->EmitData(yypvt[-1].binstr->ptr(),yypvt[-1].binstr->length()); } break;
case 393:
#line 1044 "asmparse.y"
{ float f = (float) (*yypvt[-2].float64); float* p = new (nothrow) float[yypvt[-0].int32];
                                                               if(p != NULL) {
                                                                 for(int i=0; i < yypvt[-0].int32; i++) p[i] = f;
                                                                 PASM->EmitData(p, sizeof(float)*yypvt[-0].int32); delete yypvt[-2].float64; delete [] p; 
                                                               } else PASM->report->error("Out of memory emitting data block %d bytes\n",
                                                                     sizeof(float)*yypvt[-0].int32); } break;
case 394:
#line 1051 "asmparse.y"
{ double* p = new (nothrow) double[yypvt[-0].int32];
                                                               if(p != NULL) {
                                                                 for(int i=0; i<yypvt[-0].int32; i++) p[i] = *(yypvt[-2].float64);
                                                                 PASM->EmitData(p, sizeof(double)*yypvt[-0].int32); delete yypvt[-2].float64; delete [] p;
                                                               } else PASM->report->error("Out of memory emitting data block %d bytes\n",
                                                                     sizeof(double)*yypvt[-0].int32); } break;
case 395:
#line 1058 "asmparse.y"
{ __int64* p = new (nothrow) __int64[yypvt[-0].int32];
                                                               if(p != NULL) {
                                                                 for(int i=0; i<yypvt[-0].int32; i++) p[i] = *(yypvt[-2].int64);
                                                                 PASM->EmitData(p, sizeof(__int64)*yypvt[-0].int32); delete yypvt[-2].int64; delete [] p;
                                                               } else PASM->report->error("Out of memory emitting data block %d bytes\n",
                                                                     sizeof(__int64)*yypvt[-0].int32); } break;
case 396:
#line 1065 "asmparse.y"
{ __int32* p = new (nothrow) __int32[yypvt[-0].int32];
                                                               if(p != NULL) {
                                                                 for(int i=0; i<yypvt[-0].int32; i++) p[i] = yypvt[-2].int32;
                                                                 PASM->EmitData(p, sizeof(__int32)*yypvt[-0].int32); delete [] p;
                                                               } else PASM->report->error("Out of memory emitting data block %d bytes\n",
                                                                     sizeof(__int32)*yypvt[-0].int32); } break;
case 397:
#line 1072 "asmparse.y"
{ __int16 i = (__int16) yypvt[-2].int32; FAIL_UNLESS(i == yypvt[-2].int32, ("Value %d too big\n", yypvt[-2].int32));
                                                               __int16* p = new (nothrow) __int16[yypvt[-0].int32];
                                                               if(p != NULL) {
                                                                 for(int j=0; j<yypvt[-0].int32; j++) p[j] = i;
                                                                 PASM->EmitData(p, sizeof(__int16)*yypvt[-0].int32); delete [] p;
                                                               } else PASM->report->error("Out of memory emitting data block %d bytes\n",
                                                                     sizeof(__int16)*yypvt[-0].int32); } break;
case 398:
#line 1080 "asmparse.y"
{ __int8 i = (__int8) yypvt[-2].int32; FAIL_UNLESS(i == yypvt[-2].int32, ("Value %d too big\n", yypvt[-2].int32));
                                                               __int8* p = new (nothrow) __int8[yypvt[-0].int32];
                                                               if(p != NULL) {
                                                                 for(int j=0; j<yypvt[-0].int32; j++) p[j] = i;
                                                                 PASM->EmitData(p, sizeof(__int8)*yypvt[-0].int32); delete [] p;
                                                               } else PASM->report->error("Out of memory emitting data block %d bytes\n",
                                                                     sizeof(__int8)*yypvt[-0].int32); } break;
case 399:
#line 1087 "asmparse.y"
{ PASM->EmitData(NULL, sizeof(float)*yypvt[-0].int32); } break;
case 400:
#line 1088 "asmparse.y"
{ PASM->EmitData(NULL, sizeof(double)*yypvt[-0].int32); } break;
case 401:
#line 1089 "asmparse.y"
{ PASM->EmitData(NULL, sizeof(__int64)*yypvt[-0].int32); } break;
case 402:
#line 1090 "asmparse.y"
{ PASM->EmitData(NULL, sizeof(__int32)*yypvt[-0].int32); } break;
case 403:
#line 1091 "asmparse.y"
{ PASM->EmitData(NULL, sizeof(__int16)*yypvt[-0].int32); } break;
case 404:
#line 1092 "asmparse.y"
{ PASM->EmitData(NULL, sizeof(__int8)*yypvt[-0].int32); } break;
case 405:
#line 1096 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R4);
                                                               float f = (float)(*yypvt[-1].float64);
                                                               yyval.binstr->appendInt32(*((__int32*)&f)); delete yypvt[-1].float64; } break;
case 406:
#line 1099 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R8); 
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-1].float64); delete yypvt[-1].float64; } break;
case 407:
#line 1101 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R4); 
                                                               yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 408:
#line 1103 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R8); 
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-1].int64); delete yypvt[-1].int64; } break;
case 409:
#line 1105 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I8); 
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-1].int64); delete yypvt[-1].int64; } break;
case 410:
#line 1107 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I4); 
                                                               yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 411:
#line 1109 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I2); 
                                                               yyval.binstr->appendInt16(yypvt[-1].int32); } break;
case 412:
#line 1111 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I1); 
                                                               yyval.binstr->appendInt8(yypvt[-1].int32); } break;
case 413:
#line 1113 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U8); 
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-1].int64); delete yypvt[-1].int64; } break;
case 414:
#line 1115 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U4); 
                                                               yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 415:
#line 1117 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U2); 
                                                               yyval.binstr->appendInt16(yypvt[-1].int32); } break;
case 416:
#line 1119 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U1); 
                                                               yyval.binstr->appendInt8(yypvt[-1].int32); } break;
case 417:
#line 1121 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U8); 
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-1].int64); delete yypvt[-1].int64; } break;
case 418:
#line 1123 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U4); 
                                                               yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 419:
#line 1125 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U2); 
                                                               yyval.binstr->appendInt16(yypvt[-1].int32); } break;
case 420:
#line 1127 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U1); 
                                                               yyval.binstr->appendInt8(yypvt[-1].int32); } break;
case 421:
#line 1129 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_CHAR); 
                                                               yyval.binstr->appendInt16(yypvt[-1].int32); } break;
case 422:
#line 1131 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_BOOLEAN); 
                                                               yyval.binstr->appendInt8(yypvt[-1].int32);} break;
case 423:
#line 1133 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING);
                                                               yyval.binstr->append(yypvt[-1].binstr); delete yypvt[-1].binstr;} break;
case 424:
#line 1137 "asmparse.y"
{ bParsingByteArray = TRUE; } break;
case 425:
#line 1140 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 426:
#line 1141 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 427:
#line 1144 "asmparse.y"
{ __int8 i = (__int8) yypvt[-0].int32; yyval.binstr = new BinStr(); yyval.binstr->appendInt8(i); } break;
case 428:
#line 1145 "asmparse.y"
{ __int8 i = (__int8) yypvt[-0].int32; yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt8(i); } break;
case 429:
#line 1149 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 430:
#line 1150 "asmparse.y"
{ yyval.binstr = BinStrToUnicode(yypvt[-0].binstr,true); yyval.binstr->insertInt8(ELEMENT_TYPE_STRING);} break;
case 431:
#line 1151 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_CLASS); 
                                                               yyval.binstr->appendInt32(0); } break;
case 432:
#line 1156 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 433:
#line 1157 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING); yyval.binstr->appendInt8(0xFF); } break;
case 434:
#line 1158 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING); 
                                                               AppendStringWithLength(yyval.binstr,yypvt[-1].string); delete [] yypvt[-1].string;} break;
case 435:
#line 1160 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TYPE); 
                                                               AppendStringWithLength(yyval.binstr,yypvt[-1].string); delete [] yypvt[-1].string;} break;
case 436:
#line 1162 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TYPE); 
                                                               AppendStringWithLength(yyval.binstr,PASM->ReflectionNotation(yypvt[-1].token));} break;
case 437:
#line 1164 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TYPE); yyval.binstr->appendInt8(0xFF); } break;
case 438:
#line 1165 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(SERIALIZATION_TYPE_TAGGED_OBJECT);} break;
case 439:
#line 1167 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_R4);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 440:
#line 1171 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_R8);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 441:
#line 1175 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_I8);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 442:
#line 1179 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_I4);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 443:
#line 1183 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_I2);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 444:
#line 1187 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_I1);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 445:
#line 1191 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U8);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 446:
#line 1195 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U4);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 447:
#line 1199 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U2);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 448:
#line 1203 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U1);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 449:
#line 1207 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U8);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 450:
#line 1211 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U4);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 451:
#line 1215 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U2);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 452:
#line 1219 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U1);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 453:
#line 1223 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_CHAR);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 454:
#line 1227 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_BOOLEAN);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 455:
#line 1231 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_STRING);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 456:
#line 1235 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(SERIALIZATION_TYPE_TYPE);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 457:
#line 1239 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(SERIALIZATION_TYPE_TAGGED_OBJECT);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 458:
#line 1245 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 459:
#line 1246 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr;
                                                               float f = (float) (*yypvt[-0].float64); yyval.binstr->appendInt32(*((__int32*)&f)); delete yypvt[-0].float64; } break;
case 460:
#line 1248 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; 
                                                               yyval.binstr->appendInt32(yypvt[-0].int32); } break;
case 461:
#line 1252 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 462:
#line 1253 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; 
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-0].float64); delete yypvt[-0].float64; } break;
case 463:
#line 1255 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; 
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-0].int64); delete yypvt[-0].int64; } break;
case 464:
#line 1259 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 465:
#line 1260 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; 
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-0].int64); delete yypvt[-0].int64; } break;
case 466:
#line 1264 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 467:
#line 1265 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt32(yypvt[-0].int32);} break;
case 468:
#line 1268 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 469:
#line 1269 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt16(yypvt[-0].int32);} break;
case 470:
#line 1272 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 471:
#line 1273 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt8(yypvt[-0].int32); } break;
case 472:
#line 1276 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 473:
#line 1277 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; 
                                                               yyval.binstr->appendInt8(yypvt[-0].int32);} break;
case 474:
#line 1281 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 475:
#line 1282 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt8(0xFF); } break;
case 476:
#line 1283 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; 
                                                               AppendStringWithLength(yyval.binstr,yypvt[-0].string); delete [] yypvt[-0].string;} break;
case 477:
#line 1287 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 478:
#line 1288 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt8(0xFF); } break;
case 479:
#line 1289 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; 
                                                               AppendStringWithLength(yyval.binstr,yypvt[-0].string); delete [] yypvt[-0].string;} break;
case 480:
#line 1291 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; 
                                                               AppendStringWithLength(yyval.binstr,PASM->ReflectionNotation(yypvt[-0].token));} break;
case 481:
#line 1295 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 482:
#line 1296 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
case 483:
#line 1300 "asmparse.y"
{ parser->m_ANSFirst.PUSH(PASM->m_firstArgName);
                                                               parser->m_ANSLast.PUSH(PASM->m_lastArgName);   
                                                               PASM->m_firstArgName = NULL;
                                                               PASM->m_lastArgName = NULL; } break;
case 484:
#line 1306 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 485:
#line 1309 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 486:
#line 1312 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 487:
#line 1315 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 488:
#line 1318 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 489:
#line 1321 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 490:
#line 1324 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); 
                                                               if((!PASM->OnErrGo)&&
                                                               ((yypvt[-0].opcode == CEE_NEWOBJ)||
                                                                (yypvt[-0].opcode == CEE_CALLVIRT))) 
                                                                  iCallConv = IMAGE_CEE_CS_CALLCONV_HASTHIS;
                                                             } break;
case 491:
#line 1332 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 492:
#line 1335 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 493:
#line 1338 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 494:
#line 1341 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 495:
#line 1344 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); iOpcodeLen = PASM->OpcodeLen(yyval.instr); } break;
case 496:
#line 1347 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 497:
#line 1350 "asmparse.y"
{ yyval.instr = yypvt[-1].instr; bParsingByteArray = TRUE; } break;
case 498:
#line 1354 "asmparse.y"
{ PASM->EmitOpcode(yypvt[-0].instr); } break;
case 499:
#line 1355 "asmparse.y"
{ PASM->EmitInstrVar(yypvt[-1].instr, yypvt[-0].int32); } break;
case 500:
#line 1356 "asmparse.y"
{ PASM->EmitInstrVarByName(yypvt[-1].instr, yypvt[-0].string); } break;
case 501:
#line 1357 "asmparse.y"
{ PASM->EmitInstrI(yypvt[-1].instr, yypvt[-0].int32); } break;
case 502:
#line 1358 "asmparse.y"
{ PASM->EmitInstrI8(yypvt[-1].instr, yypvt[-0].int64); } break;
case 503:
#line 1359 "asmparse.y"
{ PASM->EmitInstrR(yypvt[-1].instr, yypvt[-0].float64); delete (yypvt[-0].float64);} break;
case 504:
#line 1360 "asmparse.y"
{ double f = (double) (*yypvt[-0].int64); PASM->EmitInstrR(yypvt[-1].instr, &f); } break;
case 505:
#line 1361 "asmparse.y"
{ unsigned L = yypvt[-1].binstr->length();
                                                               FAIL_UNLESS(L >= sizeof(float), ("%d hexbytes, must be at least %d\n",
                                                                           L,sizeof(float))); 
                                                               if(L < sizeof(float)) {YYERROR; } 
                                                               else {
                                                                   double f = (L >= sizeof(double)) ? *((double *)(yypvt[-1].binstr->ptr()))
                                                                                    : (double)(*(float *)(yypvt[-1].binstr->ptr())); 
                                                                   PASM->EmitInstrR(yypvt[-2].instr,&f); }
                                                               delete yypvt[-1].binstr; } break;
case 506:
#line 1370 "asmparse.y"
{ PASM->EmitInstrBrOffset(yypvt[-1].instr, yypvt[-0].int32); } break;
case 507:
#line 1371 "asmparse.y"
{ PASM->EmitInstrBrTarget(yypvt[-1].instr, yypvt[-0].string); } break;
case 508:
#line 1373 "asmparse.y"
{ PASM->SetMemberRefFixup(yypvt[-0].token,PASM->OpcodeLen(yypvt[-1].instr));
                                                               PASM->EmitInstrI(yypvt[-1].instr,yypvt[-0].token);
                                                               PASM->m_tkCurrentCVOwner = yypvt[-0].token;
                                                               PASM->m_pCustomDescrList = NULL;
                                                               iCallConv = 0;
                                                             } break;
case 509:
#line 1380 "asmparse.y"
{ yypvt[-3].binstr->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD); 
                                                               mdToken mr = PASM->MakeMemberRef(yypvt[-2].token, yypvt[-0].string, yypvt[-3].binstr);
                                                               PASM->SetMemberRefFixup(mr, PASM->OpcodeLen(yypvt[-4].instr));
                                                               PASM->EmitInstrI(yypvt[-4].instr,mr);
                                                               PASM->m_tkCurrentCVOwner = mr;
                                                               PASM->m_pCustomDescrList = NULL;
                                                             } break;
case 510:
#line 1388 "asmparse.y"
{ yypvt[-1].binstr->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD); 
                                                               mdToken mr = PASM->MakeMemberRef(mdTokenNil, yypvt[-0].string, yypvt[-1].binstr);
                                                               PASM->SetMemberRefFixup(mr, PASM->OpcodeLen(yypvt[-2].instr));
                                                               PASM->EmitInstrI(yypvt[-2].instr,mr);
                                                               PASM->m_tkCurrentCVOwner = mr;
                                                               PASM->m_pCustomDescrList = NULL;
                                                             } break;
case 511:
#line 1395 "asmparse.y"
{ mdToken mr = yypvt[-0].token;
                                                               PASM->SetMemberRefFixup(mr, PASM->OpcodeLen(yypvt[-1].instr));
                                                               PASM->EmitInstrI(yypvt[-1].instr,mr);
                                                               PASM->m_tkCurrentCVOwner = mr;
                                                               PASM->m_pCustomDescrList = NULL;
                                                             } break;
case 512:
#line 1401 "asmparse.y"
{ mdToken mr = yypvt[-0].tdd->m_tkTypeSpec;
                                                               PASM->SetMemberRefFixup(mr, PASM->OpcodeLen(yypvt[-1].instr));
                                                               PASM->EmitInstrI(yypvt[-1].instr,mr);
                                                               PASM->m_tkCurrentCVOwner = mr;
                                                               PASM->m_pCustomDescrList = NULL;
                                                             } break;
case 513:
#line 1407 "asmparse.y"
{ mdToken mr = yypvt[-0].tdd->m_tkTypeSpec;
                                                               PASM->SetMemberRefFixup(mr, PASM->OpcodeLen(yypvt[-1].instr));
                                                               PASM->EmitInstrI(yypvt[-1].instr,mr);
                                                               PASM->m_tkCurrentCVOwner = mr;
                                                               PASM->m_pCustomDescrList = NULL;
                                                             } break;
case 514:
#line 1413 "asmparse.y"
{ PASM->EmitInstrI(yypvt[-1].instr, yypvt[-0].token); 
                                                               PASM->m_tkCurrentCVOwner = yypvt[-0].token;
                                                               PASM->m_pCustomDescrList = NULL;
                                                             } break;
case 515:
#line 1417 "asmparse.y"
{ PASM->EmitInstrStringLiteral(yypvt[-1].instr, yypvt[-0].binstr,TRUE); } break;
case 516:
#line 1419 "asmparse.y"
{ PASM->EmitInstrStringLiteral(yypvt[-4].instr, yypvt[-1].binstr,FALSE); } break;
case 517:
#line 1421 "asmparse.y"
{ PASM->EmitInstrStringLiteral(yypvt[-3].instr, yypvt[-1].binstr,FALSE,TRUE); } break;
case 518:
#line 1423 "asmparse.y"
{ PASM->EmitInstrSig(yypvt[-5].instr, parser->MakeSig(yypvt[-4].int32, yypvt[-3].binstr, yypvt[-1].binstr)); 
                                                               PASM->ResetArgNameList();
                                                             } break;
case 519:
#line 1427 "asmparse.y"
{ PASM->EmitInstrI(yypvt[-1].instr,yypvt[-0].token);
                                                               PASM->m_tkCurrentCVOwner = yypvt[-0].token;
                                                               PASM->m_pCustomDescrList = NULL;
                                                               iOpcodeLen = 0;
                                                             } break;
case 520:
#line 1432 "asmparse.y"
{ PASM->EmitInstrSwitch(yypvt[-3].instr, yypvt[-1].labels); } break;
case 521:
#line 1435 "asmparse.y"
{ yyval.labels = 0; } break;
case 522:
#line 1436 "asmparse.y"
{ yyval.labels = new Labels(yypvt[-2].string, yypvt[-0].labels, TRUE); } break;
case 523:
#line 1437 "asmparse.y"
{ yyval.labels = new Labels((char *)(UINT_PTR)yypvt[-2].int32, yypvt[-0].labels, FALSE); } break;
case 524:
#line 1438 "asmparse.y"
{ yyval.labels = new Labels(yypvt[-0].string, NULL, TRUE); } break;
case 525:
#line 1439 "asmparse.y"
{ yyval.labels = new Labels((char *)(UINT_PTR)yypvt[-0].int32, NULL, FALSE); } break;
case 526:
#line 1443 "asmparse.y"
{ yyval.binstr = NULL; } break;
case 527:
#line 1444 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; } break;
case 528:
#line 1447 "asmparse.y"
{ yyval.binstr = NULL; } break;
case 529:
#line 1448 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 530:
#line 1451 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 531:
#line 1452 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
case 532:
#line 1456 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 533:
#line 1457 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr;} break;
case 534:
#line 1460 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 535:
#line 1461 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
case 536:
#line 1464 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_SENTINEL); } break;
case 537:
#line 1465 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->append(yypvt[-1].binstr); PASM->addArgName(NULL, yypvt[-1].binstr, yypvt[-0].binstr, yypvt[-2].int32); } break;
case 538:
#line 1466 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->append(yypvt[-2].binstr); PASM->addArgName(yypvt[-0].string, yypvt[-2].binstr, yypvt[-1].binstr, yypvt[-3].int32);} break;
case 539:
#line 1470 "asmparse.y"
{ yyval.token = PASM->ResolveClassRef(PASM->GetAsmRef(yypvt[-2].string), yypvt[-0].string, NULL); delete[] yypvt[-2].string;} break;
case 540:
#line 1471 "asmparse.y"
{ yyval.token = PASM->ResolveClassRef(yypvt[-2].token, yypvt[-0].string, NULL); } break;
case 541:
#line 1472 "asmparse.y"
{ yyval.token = PASM->ResolveClassRef(mdTokenNil, yypvt[-0].string, NULL); } break;
case 542:
#line 1473 "asmparse.y"
{ yyval.token = PASM->ResolveClassRef(PASM->GetModRef(yypvt[-2].string),yypvt[-0].string, NULL); delete[] yypvt[-2].string;} break;
case 543:
#line 1474 "asmparse.y"
{ yyval.token = PASM->ResolveClassRef(1,yypvt[-0].string,NULL); } break;
case 544:
#line 1475 "asmparse.y"
{ yyval.token = yypvt[-0].token; } break;
case 545:
#line 1476 "asmparse.y"
{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec; } break;
case 546:
#line 1477 "asmparse.y"
{ if(PASM->m_pCurClass != NULL) yyval.token = PASM->m_pCurClass->m_cl;
                                                                else { yyval.token = 0; PASM->report->error(".this outside class scope\n"); } 
                                                              } break;
case 547:
#line 1480 "asmparse.y"
{ if(PASM->m_pCurClass != NULL) {
                                                                  yyval.token = PASM->m_pCurClass->m_crExtends;
                                                                  if(RidFromToken(yyval.token) == 0)
                                                                    PASM->report->error(".base undefined\n");
                                                                } else { yyval.token = 0; PASM->report->error(".base outside class scope\n"); } 
                                                              } break;
case 548:
#line 1486 "asmparse.y"
{ if(PASM->m_pCurClass != NULL) {
                                                                  if(PASM->m_pCurClass->m_pEncloser != NULL) yyval.token = PASM->m_pCurClass->m_pEncloser->m_cl;
                                                                  else { yyval.token = 0; PASM->report->error(".nester undefined\n"); }
                                                                } else { yyval.token = 0; PASM->report->error(".nester outside class scope\n"); } 
                                                              } break;
case 549:
#line 1493 "asmparse.y"
{ yyval.string = yypvt[-0].string; } break;
case 550:
#line 1494 "asmparse.y"
{ yyval.string = newStringWDel(yypvt[-2].string, NESTING_SEP, yypvt[-0].string); } break;
case 551:
#line 1497 "asmparse.y"
{ yyval.token = yypvt[-0].token;} break;
case 552:
#line 1498 "asmparse.y"
{ yyval.token = PASM->GetAsmRef(yypvt[-1].string); delete[] yypvt[-1].string;} break;
case 553:
#line 1499 "asmparse.y"
{ yyval.token = PASM->GetModRef(yypvt[-1].string); delete[] yypvt[-1].string;} break;
case 554:
#line 1500 "asmparse.y"
{ yyval.token = PASM->ResolveTypeSpec(yypvt[-0].binstr); } break;
case 555:
#line 1504 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 556:
#line 1506 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_CUSTOMMARSHALER);
                                                                corEmitInt(yyval.binstr,yypvt[-7].binstr->length()); yyval.binstr->append(yypvt[-7].binstr);
                                                                corEmitInt(yyval.binstr,yypvt[-5].binstr->length()); yyval.binstr->append(yypvt[-5].binstr);
                                                                corEmitInt(yyval.binstr,yypvt[-3].binstr->length()); yyval.binstr->append(yypvt[-3].binstr);
                                                                corEmitInt(yyval.binstr,yypvt[-1].binstr->length()); yyval.binstr->append(yypvt[-1].binstr); 
                                                                PASM->report->warn("Deprecated 4-string form of custom marshaler, first two strings ignored\n");} break;
case 557:
#line 1513 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_CUSTOMMARSHALER);
                                                                corEmitInt(yyval.binstr,0);
                                                                corEmitInt(yyval.binstr,0);
                                                                corEmitInt(yyval.binstr,yypvt[-3].binstr->length()); yyval.binstr->append(yypvt[-3].binstr);
                                                                corEmitInt(yyval.binstr,yypvt[-1].binstr->length()); yyval.binstr->append(yypvt[-1].binstr); } break;
case 558:
#line 1518 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_FIXEDSYSSTRING);
                                                                corEmitInt(yyval.binstr,yypvt[-1].int32); } break;
case 559:
#line 1521 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_FIXEDARRAY);
                                                                corEmitInt(yyval.binstr,yypvt[-2].int32); yyval.binstr->append(yypvt[-0].binstr); } break;
case 560:
#line 1523 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_VARIANT); 
                                                                PASM->report->warn("Deprecated native type 'variant'\n"); } break;
case 561:
#line 1525 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_CURRENCY); } break;
case 562:
#line 1526 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_SYSCHAR); 
                                                                PASM->report->warn("Deprecated native type 'syschar'\n"); } break;
case 563:
#line 1528 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_VOID); 
                                                                PASM->report->warn("Deprecated native type 'void'\n"); } break;
case 564:
#line 1530 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_BOOLEAN); } break;
case 565:
#line 1531 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_I1); } break;
case 566:
#line 1532 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_I2); } break;
case 567:
#line 1533 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_I4); } break;
case 568:
#line 1534 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_I8); } break;
case 569:
#line 1535 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_R4); } break;
case 570:
#line 1536 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_R8); } break;
case 571:
#line 1537 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_ERROR); } break;
case 572:
#line 1538 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U1); } break;
case 573:
#line 1539 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U2); } break;
case 574:
#line 1540 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U4); } break;
case 575:
#line 1541 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U8); } break;
case 576:
#line 1542 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U1); } break;
case 577:
#line 1543 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U2); } break;
case 578:
#line 1544 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U4); } break;
case 579:
#line 1545 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U8); } break;
case 580:
#line 1546 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(NATIVE_TYPE_PTR); 
                                                                PASM->report->warn("Deprecated native type '*'\n"); } break;
case 581:
#line 1548 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; if(yyval.binstr->length()==0) yyval.binstr->appendInt8(NATIVE_TYPE_MAX);
                                                                yyval.binstr->insertInt8(NATIVE_TYPE_ARRAY); } break;
case 582:
#line 1550 "asmparse.y"
{ yyval.binstr = yypvt[-3].binstr; if(yyval.binstr->length()==0) yyval.binstr->appendInt8(NATIVE_TYPE_MAX); 
                                                                yyval.binstr->insertInt8(NATIVE_TYPE_ARRAY);
                                                                corEmitInt(yyval.binstr,0);
                                                                corEmitInt(yyval.binstr,yypvt[-1].int32); 
                                                                corEmitInt(yyval.binstr,0); } break;
case 583:
#line 1555 "asmparse.y"
{ yyval.binstr = yypvt[-5].binstr; if(yyval.binstr->length()==0) yyval.binstr->appendInt8(NATIVE_TYPE_MAX); 
                                                                yyval.binstr->insertInt8(NATIVE_TYPE_ARRAY);
                                                                corEmitInt(yyval.binstr,yypvt[-1].int32);
                                                                corEmitInt(yyval.binstr,yypvt[-3].int32);
                                                                corEmitInt(yyval.binstr,ntaSizeParamIndexSpecified); } break;
case 584:
#line 1560 "asmparse.y"
{ yyval.binstr = yypvt[-4].binstr; if(yyval.binstr->length()==0) yyval.binstr->appendInt8(NATIVE_TYPE_MAX); 
                                                                yyval.binstr->insertInt8(NATIVE_TYPE_ARRAY);
                                                                corEmitInt(yyval.binstr,yypvt[-1].int32); } break;
case 585:
#line 1563 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_DECIMAL); 
                                                                PASM->report->warn("Deprecated native type 'decimal'\n"); } break;
case 586:
#line 1565 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_DATE); 
                                                                PASM->report->warn("Deprecated native type 'date'\n"); } break;
case 587:
#line 1567 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_BSTR); } break;
case 588:
#line 1568 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_LPSTR); } break;
case 589:
#line 1569 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_LPWSTR); } break;
case 590:
#line 1570 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_LPTSTR); } break;
case 591:
#line 1571 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_OBJECTREF); 
                                                                PASM->report->warn("Deprecated native type 'objectref'\n"); } break;
case 592:
#line 1573 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_IUNKNOWN);
                                                                if(yypvt[-0].int32 != -1) corEmitInt(yyval.binstr,yypvt[-0].int32); } break;
case 593:
#line 1575 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_IDISPATCH); 
                                                                if(yypvt[-0].int32 != -1) corEmitInt(yyval.binstr,yypvt[-0].int32); } break;
case 594:
#line 1577 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_STRUCT); } break;
case 595:
#line 1578 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_INTF);
                                                                if(yypvt[-0].int32 != -1) corEmitInt(yyval.binstr,yypvt[-0].int32); } break;
case 596:
#line 1580 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_SAFEARRAY); 
                                                                corEmitInt(yyval.binstr,yypvt[-0].int32); 
                                                                corEmitInt(yyval.binstr,0);} break;
case 597:
#line 1583 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_SAFEARRAY); 
                                                                corEmitInt(yyval.binstr,yypvt[-2].int32); 
                                                                corEmitInt(yyval.binstr,yypvt[-0].binstr->length()); yyval.binstr->append(yypvt[-0].binstr); } break;
case 598:
#line 1587 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_INT); } break;
case 599:
#line 1588 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_UINT); } break;
case 600:
#line 1589 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_UINT); } break;
case 601:
#line 1590 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_NESTEDSTRUCT); 
                                                                PASM->report->warn("Deprecated native type 'nested struct'\n"); } break;
case 602:
#line 1592 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_BYVALSTR); } break;
case 603:
#line 1593 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_ANSIBSTR); } break;
case 604:
#line 1594 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_TBSTR); } break;
case 605:
#line 1595 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_VARIANTBOOL); } break;
case 606:
#line 1596 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_FUNC); } break;
case 607:
#line 1597 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_ASANY); } break;
case 608:
#line 1598 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_LPSTRUCT); } break;
case 609:
#line 1599 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->append(yypvt[-0].tdd->m_pbsTypeSpec); } break;
case 610:
#line 1602 "asmparse.y"
{ yyval.int32 = -1; } break;
case 611:
#line 1603 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32; } break;
case 612:
#line 1606 "asmparse.y"
{ yyval.int32 = VT_EMPTY; } break;
case 613:
#line 1607 "asmparse.y"
{ yyval.int32 = VT_NULL; } break;
case 614:
#line 1608 "asmparse.y"
{ yyval.int32 = VT_VARIANT; } break;
case 615:
#line 1609 "asmparse.y"
{ yyval.int32 = VT_CY; } break;
case 616:
#line 1610 "asmparse.y"
{ yyval.int32 = VT_VOID; } break;
case 617:
#line 1611 "asmparse.y"
{ yyval.int32 = VT_BOOL; } break;
case 618:
#line 1612 "asmparse.y"
{ yyval.int32 = VT_I1; } break;
case 619:
#line 1613 "asmparse.y"
{ yyval.int32 = VT_I2; } break;
case 620:
#line 1614 "asmparse.y"
{ yyval.int32 = VT_I4; } break;
case 621:
#line 1615 "asmparse.y"
{ yyval.int32 = VT_I8; } break;
case 622:
#line 1616 "asmparse.y"
{ yyval.int32 = VT_R4; } break;
case 623:
#line 1617 "asmparse.y"
{ yyval.int32 = VT_R8; } break;
case 624:
#line 1618 "asmparse.y"
{ yyval.int32 = VT_UI1; } break;
case 625:
#line 1619 "asmparse.y"
{ yyval.int32 = VT_UI2; } break;
case 626:
#line 1620 "asmparse.y"
{ yyval.int32 = VT_UI4; } break;
case 627:
#line 1621 "asmparse.y"
{ yyval.int32 = VT_UI8; } break;
case 628:
#line 1622 "asmparse.y"
{ yyval.int32 = VT_UI1; } break;
case 629:
#line 1623 "asmparse.y"
{ yyval.int32 = VT_UI2; } break;
case 630:
#line 1624 "asmparse.y"
{ yyval.int32 = VT_UI4; } break;
case 631:
#line 1625 "asmparse.y"
{ yyval.int32 = VT_UI8; } break;
case 632:
#line 1626 "asmparse.y"
{ yyval.int32 = VT_PTR; } break;
case 633:
#line 1627 "asmparse.y"
{ yyval.int32 = yypvt[-2].int32 | VT_ARRAY; } break;
case 634:
#line 1628 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | VT_VECTOR; } break;
case 635:
#line 1629 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | VT_BYREF; } break;
case 636:
#line 1630 "asmparse.y"
{ yyval.int32 = VT_DECIMAL; } break;
case 637:
#line 1631 "asmparse.y"
{ yyval.int32 = VT_DATE; } break;
case 638:
#line 1632 "asmparse.y"
{ yyval.int32 = VT_BSTR; } break;
case 639:
#line 1633 "asmparse.y"
{ yyval.int32 = VT_LPSTR; } break;
case 640:
#line 1634 "asmparse.y"
{ yyval.int32 = VT_LPWSTR; } break;
case 641:
#line 1635 "asmparse.y"
{ yyval.int32 = VT_UNKNOWN; } break;
case 642:
#line 1636 "asmparse.y"
{ yyval.int32 = VT_DISPATCH; } break;
case 643:
#line 1637 "asmparse.y"
{ yyval.int32 = VT_SAFEARRAY; } break;
case 644:
#line 1638 "asmparse.y"
{ yyval.int32 = VT_INT; } break;
case 645:
#line 1639 "asmparse.y"
{ yyval.int32 = VT_UINT; } break;
case 646:
#line 1640 "asmparse.y"
{ yyval.int32 = VT_UINT; } break;
case 647:
#line 1641 "asmparse.y"
{ yyval.int32 = VT_ERROR; } break;
case 648:
#line 1642 "asmparse.y"
{ yyval.int32 = VT_HRESULT; } break;
case 649:
#line 1643 "asmparse.y"
{ yyval.int32 = VT_CARRAY; } break;
case 650:
#line 1644 "asmparse.y"
{ yyval.int32 = VT_USERDEFINED; } break;
case 651:
#line 1645 "asmparse.y"
{ yyval.int32 = VT_RECORD; } break;
case 652:
#line 1646 "asmparse.y"
{ yyval.int32 = VT_FILETIME; } break;
case 653:
#line 1647 "asmparse.y"
{ yyval.int32 = VT_BLOB; } break;
case 654:
#line 1648 "asmparse.y"
{ yyval.int32 = VT_STREAM; } break;
case 655:
#line 1649 "asmparse.y"
{ yyval.int32 = VT_STORAGE; } break;
case 656:
#line 1650 "asmparse.y"
{ yyval.int32 = VT_STREAMED_OBJECT; } break;
case 657:
#line 1651 "asmparse.y"
{ yyval.int32 = VT_STORED_OBJECT; } break;
case 658:
#line 1652 "asmparse.y"
{ yyval.int32 = VT_BLOB_OBJECT; } break;
case 659:
#line 1653 "asmparse.y"
{ yyval.int32 = VT_CF; } break;
case 660:
#line 1654 "asmparse.y"
{ yyval.int32 = VT_CLSID; } break;
case 661:
#line 1658 "asmparse.y"
{ if(yypvt[-0].token == PASM->m_tkSysString)
                                                                {     yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING); }
                                                                else if(yypvt[-0].token == PASM->m_tkSysObject)
                                                                {     yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_OBJECT); }
                                                                else  
                                                                 yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_CLASS, yypvt[-0].token); } break;
case 662:
#line 1664 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_OBJECT); } break;
case 663:
#line 1665 "asmparse.y"
{ yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_VALUETYPE, yypvt[-0].token); } break;
case 664:
#line 1666 "asmparse.y"
{ yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_VALUETYPE, yypvt[-0].token); } break;
case 665:
#line 1667 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 666:
#line 1668 "asmparse.y"
{ yyval.binstr = parser->MakeTypeArray(ELEMENT_TYPE_ARRAY, yypvt[-3].binstr, yypvt[-1].binstr); } break;
case 667:
#line 1669 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_BYREF); } break;
case 668:
#line 1670 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_PTR); } break;
case 669:
#line 1671 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_PINNED); } break;
case 670:
#line 1672 "asmparse.y"
{ yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_CMOD_REQD, yypvt[-1].token);
                                                                yyval.binstr->append(yypvt[-4].binstr); } break;
case 671:
#line 1674 "asmparse.y"
{ yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_CMOD_OPT, yypvt[-1].token);
                                                                yyval.binstr->append(yypvt[-4].binstr); } break;
case 672:
#line 1677 "asmparse.y"
{ yyval.binstr = parser->MakeSig(yypvt[-5].int32, yypvt[-4].binstr, yypvt[-1].binstr);
                                                                yyval.binstr->insertInt8(ELEMENT_TYPE_FNPTR); 
                                                                PASM->delArgNameList(PASM->m_firstArgName);
                                                                PASM->m_firstArgName = parser->m_ANSFirst.POP();
                                                                PASM->m_lastArgName = parser->m_ANSLast.POP();
                                                              } break;
case 673:
#line 1683 "asmparse.y"
{ if(yypvt[-1].binstr == NULL) yyval.binstr = yypvt[-3].binstr;
                                                                else {
                                                                  yyval.binstr = new BinStr(); 
                                                                  yyval.binstr->appendInt8(ELEMENT_TYPE_GENERICINST); 
                                                                  yyval.binstr->append(yypvt[-3].binstr);
                                                                  corEmitInt(yyval.binstr, corCountArgs(yypvt[-1].binstr));
                                                                  yyval.binstr->append(yypvt[-1].binstr); delete yypvt[-3].binstr; delete yypvt[-1].binstr; }} break;
case 674:
#line 1690 "asmparse.y"
{ //if(PASM->m_pCurMethod)  {
                                                                //  if(($3 < 0)||((DWORD)$3 >= PASM->m_pCurMethod->m_NumTyPars))
                                                                //    PASM->report->error("Invalid method type parameter '%d'\n",$3);
                                                                  yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_MVAR); corEmitInt(yyval.binstr, yypvt[-0].int32); 
                                                                //} else PASM->report->error("Method type parameter '%d' outside method scope\n",$3);
                                                              } break;
case 675:
#line 1696 "asmparse.y"
{ //if(PASM->m_pCurClass)  {
                                                                //  if(($2 < 0)||((DWORD)$2 >= PASM->m_pCurClass->m_NumTyPars))
                                                                //    PASM->report->error("Invalid type parameter '%d'\n",$2);
                                                                  yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_VAR); corEmitInt(yyval.binstr, yypvt[-0].int32); 
                                                                //} else PASM->report->error("Type parameter '%d' outside class scope\n",$2);
                                                              } break;
case 676:
#line 1702 "asmparse.y"
{ int eltype = ELEMENT_TYPE_MVAR;
                                                                int n=-1;
                                                                if(PASM->m_pCurMethod) n = PASM->m_pCurMethod->FindTyPar(yypvt[-0].string);
                                                                else {
                                                                  if(PASM->m_TyParList) n = PASM->m_TyParList->IndexOf(yypvt[-0].string);
                                                                  if(n == -1)
                                                                  { n = TyParFixupList.COUNT();
                                                                    TyParFixupList.PUSH(yypvt[-0].string);
                                                                    eltype = ELEMENT_TYPE_MVARFIXUP;
                                                                  }
                                                                }
                                                                if(n == -1) { PASM->report->error("Invalid method type parameter '%s'\n",yypvt[-0].string);
                                                                n = 0x1FFFFFFF; }
                                                                yyval.binstr = new BinStr(); yyval.binstr->appendInt8(eltype); corEmitInt(yyval.binstr,n); 
                                                              } break;
case 677:
#line 1717 "asmparse.y"
{ int eltype = ELEMENT_TYPE_VAR;
                                                                int n=-1;
                                                                if(PASM->m_pCurClass && !newclass) n = PASM->m_pCurClass->FindTyPar(yypvt[-0].string);
                                                                else {
                                                                  if(PASM->m_TyParList) n = PASM->m_TyParList->IndexOf(yypvt[-0].string);
                                                                  if(n == -1)
                                                                  { n = TyParFixupList.COUNT();
                                                                    TyParFixupList.PUSH(yypvt[-0].string);
                                                                    eltype = ELEMENT_TYPE_VARFIXUP;
                                                                  }
                                                                }
                                                                if(n == -1) { PASM->report->error("Invalid type parameter '%s'\n",yypvt[-0].string);
                                                                n = 0x1FFFFFFF; }
                                                                yyval.binstr = new BinStr(); yyval.binstr->appendInt8(eltype); corEmitInt(yyval.binstr,n); 
                                                              } break;
case 678:
#line 1732 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_TYPEDBYREF); } break;
case 679:
#line 1733 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_VOID); } break;
case 680:
#line 1734 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I); } break;
case 681:
#line 1735 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U); } break;
case 682:
#line 1736 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U); } break;
case 683:
#line 1737 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 684:
#line 1738 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_SENTINEL); } break;
case 685:
#line 1741 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_CHAR); } break;
case 686:
#line 1742 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING); } break;
case 687:
#line 1743 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_BOOLEAN); } break;
case 688:
#line 1744 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I1); } break;
case 689:
#line 1745 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I2); } break;
case 690:
#line 1746 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I4); } break;
case 691:
#line 1747 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I8); } break;
case 692:
#line 1748 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R4); } break;
case 693:
#line 1749 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R8); } break;
case 694:
#line 1750 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U1); } break;
case 695:
#line 1751 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U2); } break;
case 696:
#line 1752 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U4); } break;
case 697:
#line 1753 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U8); } break;
case 698:
#line 1754 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U1); } break;
case 699:
#line 1755 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U2); } break;
case 700:
#line 1756 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U4); } break;
case 701:
#line 1757 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U8); } break;
case 702:
#line 1758 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->append(yypvt[-0].tdd->m_pbsTypeSpec); } break;
case 703:
#line 1761 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 704:
#line 1762 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yypvt[-2].binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
case 705:
#line 1765 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(0x7FFFFFFF); yyval.binstr->appendInt32(0x7FFFFFFF);  } break;
case 706:
#line 1766 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(0x7FFFFFFF); yyval.binstr->appendInt32(0x7FFFFFFF);  } break;
case 707:
#line 1767 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(0); yyval.binstr->appendInt32(yypvt[-0].int32); } break;
case 708:
#line 1768 "asmparse.y"
{ FAIL_UNLESS(yypvt[-2].int32 <= yypvt[-0].int32, ("lower bound %d must be <= upper bound %d\n", yypvt[-2].int32, yypvt[-0].int32));
                                                                if (yypvt[-2].int32 > yypvt[-0].int32) { YYERROR; };        
                                                                yyval.binstr = new BinStr(); yyval.binstr->appendInt32(yypvt[-2].int32); yyval.binstr->appendInt32(yypvt[-0].int32-yypvt[-2].int32+1); } break;
case 709:
#line 1771 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(yypvt[-1].int32); yyval.binstr->appendInt32(0x7FFFFFFF); } break;
case 710:
#line 1776 "asmparse.y"
{ PASM->AddPermissionDecl(yypvt[-4].secAct, yypvt[-3].token, yypvt[-1].pair); } break;
case 711:
#line 1778 "asmparse.y"
{ PASM->AddPermissionDecl(yypvt[-5].secAct, yypvt[-4].token, yypvt[-1].binstr); } break;
case 712:
#line 1779 "asmparse.y"
{ PASM->AddPermissionDecl(yypvt[-1].secAct, yypvt[-0].token, (NVPair *)NULL); } break;
case 713:
#line 1780 "asmparse.y"
{ PASM->AddPermissionSetDecl(yypvt[-2].secAct, yypvt[-1].binstr); } break;
case 714:
#line 1782 "asmparse.y"
{ PASM->AddPermissionSetDecl(yypvt[-1].secAct,BinStrToUnicode(yypvt[-0].binstr,true));} break;
case 715:
#line 1784 "asmparse.y"
{ BinStr* ret = new BinStr();
                                                                ret->insertInt8('.');
                                                                corEmitInt(ret, nSecAttrBlobs);
                                                                ret->append(yypvt[-1].binstr);
                                                                PASM->AddPermissionSetDecl(yypvt[-4].secAct,ret);
                                                                nSecAttrBlobs = 0; } break;
case 716:
#line 1792 "asmparse.y"
{ yyval.binstr = new BinStr(); nSecAttrBlobs = 0;} break;
case 717:
#line 1793 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; nSecAttrBlobs = 1; } break;
case 718:
#line 1794 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->append(yypvt[-0].binstr); nSecAttrBlobs++; } break;
case 719:
#line 1798 "asmparse.y"
{ yyval.binstr = PASM->EncodeSecAttr(PASM->ReflectionNotation(yypvt[-4].token),yypvt[-1].binstr,nCustomBlobNVPairs); 
                                                                nCustomBlobNVPairs = 0; } break;
case 720:
#line 1801 "asmparse.y"
{ yyval.binstr = PASM->EncodeSecAttr(yypvt[-4].string,yypvt[-1].binstr,nCustomBlobNVPairs); 
                                                                nCustomBlobNVPairs = 0; } break;
case 721:
#line 1805 "asmparse.y"
{ yyval.secAct = yypvt[-2].secAct; bParsingByteArray = TRUE; } break;
case 722:
#line 1807 "asmparse.y"
{ yyval.secAct = yypvt[-2].secAct; bParsingByteArray = TRUE; } break;
case 723:
#line 1810 "asmparse.y"
{ yyval.pair = yypvt[-0].pair; } break;
case 724:
#line 1811 "asmparse.y"
{ yyval.pair = yypvt[-2].pair->Concat(yypvt[-0].pair); } break;
case 725:
#line 1814 "asmparse.y"
{ yypvt[-2].binstr->appendInt8(0); yyval.pair = new NVPair(yypvt[-2].binstr, yypvt[-0].binstr); } break;
case 726:
#line 1817 "asmparse.y"
{ yyval.int32 = 1; } break;
case 727:
#line 1818 "asmparse.y"
{ yyval.int32 = 0; } break;
case 728:
#line 1821 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_BOOLEAN);
                                                                yyval.binstr->appendInt8(yypvt[-0].int32); } break;
case 729:
#line 1824 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_I4);
                                                                yyval.binstr->appendInt32(yypvt[-0].int32); } break;
case 730:
#line 1827 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_I4);
                                                                yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 731:
#line 1830 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_STRING);
                                                                yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr;
                                                                yyval.binstr->appendInt8(0); } break;
case 732:
#line 1834 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
                                                                char* sz = PASM->ReflectionNotation(yypvt[-5].token);
                                                                strcpy_s((char *)yyval.binstr->getBuff((unsigned)strlen(sz) + 1), strlen(sz) + 1,sz);
                                                                yyval.binstr->appendInt8(1);
                                                                yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 733:
#line 1840 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
                                                                char* sz = PASM->ReflectionNotation(yypvt[-5].token);
                                                                strcpy_s((char *)yyval.binstr->getBuff((unsigned)strlen(sz) + 1), strlen(sz) + 1,sz);
                                                                yyval.binstr->appendInt8(2);
                                                                yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 734:
#line 1846 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
                                                                char* sz = PASM->ReflectionNotation(yypvt[-5].token);
                                                                strcpy_s((char *)yyval.binstr->getBuff((unsigned)strlen(sz) + 1), strlen(sz) + 1,sz);
                                                                yyval.binstr->appendInt8(4);
                                                                yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 735:
#line 1852 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
                                                                char* sz = PASM->ReflectionNotation(yypvt[-3].token);
                                                                strcpy_s((char *)yyval.binstr->getBuff((unsigned)strlen(sz) + 1), strlen(sz) + 1,sz);
                                                                yyval.binstr->appendInt8(4);
                                                                yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 736:
#line 1860 "asmparse.y"
{ yyval.secAct = dclRequest; } break;
case 737:
#line 1861 "asmparse.y"
{ yyval.secAct = dclDemand; } break;
case 738:
#line 1862 "asmparse.y"
{ yyval.secAct = dclAssert; } break;
case 739:
#line 1863 "asmparse.y"
{ yyval.secAct = dclDeny; } break;
case 740:
#line 1864 "asmparse.y"
{ yyval.secAct = dclPermitOnly; } break;
case 741:
#line 1865 "asmparse.y"
{ yyval.secAct = dclLinktimeCheck; } break;
case 742:
#line 1866 "asmparse.y"
{ yyval.secAct = dclInheritanceCheck; } break;
case 743:
#line 1867 "asmparse.y"
{ yyval.secAct = dclRequestMinimum; } break;
case 744:
#line 1868 "asmparse.y"
{ yyval.secAct = dclRequestOptional; } break;
case 745:
#line 1869 "asmparse.y"
{ yyval.secAct = dclRequestRefuse; } break;
case 746:
#line 1870 "asmparse.y"
{ yyval.secAct = dclPrejitGrant; } break;
case 747:
#line 1871 "asmparse.y"
{ yyval.secAct = dclPrejitDenied; } break;
case 748:
#line 1872 "asmparse.y"
{ yyval.secAct = dclNonCasDemand; } break;
case 749:
#line 1873 "asmparse.y"
{ yyval.secAct = dclNonCasLinkDemand; } break;
case 750:
#line 1874 "asmparse.y"
{ yyval.secAct = dclNonCasInheritance; } break;
case 751:
#line 1878 "asmparse.y"
{ PASM->ResetLineNumbers(); nCurrPC = PASM->m_CurPC; PENV->bExternSource = TRUE; PENV->bExternSourceAutoincrement = FALSE; } break;
case 752:
#line 1879 "asmparse.y"
{ PASM->ResetLineNumbers(); nCurrPC = PASM->m_CurPC; PENV->bExternSource = TRUE; PENV->bExternSourceAutoincrement = TRUE; } break;
case 753:
#line 1882 "asmparse.y"
{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-1].int32;
                                                                PENV->nExtCol = 0; PENV->nExtColEnd  = static_cast<unsigned>(-1);
                                                                PASM->SetSourceFileName(yypvt[-0].string);} break;
case 754:
#line 1885 "asmparse.y"
{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-0].int32;
                                                                PENV->nExtCol = 0; PENV->nExtColEnd  = static_cast<unsigned>(-1); } break;
case 755:
#line 1887 "asmparse.y"
{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-3].int32; 
                                                                PENV->nExtCol=yypvt[-1].int32; PENV->nExtColEnd = static_cast<unsigned>(-1);
                                                                PASM->SetSourceFileName(yypvt[-0].string);} break;
case 756:
#line 1890 "asmparse.y"
{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-2].int32; 
                                                                PENV->nExtCol=yypvt[-0].int32; PENV->nExtColEnd = static_cast<unsigned>(-1);} break;
case 757:
#line 1893 "asmparse.y"
{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-5].int32; 
                                                                PENV->nExtCol=yypvt[-3].int32; PENV->nExtColEnd = yypvt[-1].int32;
                                                                PASM->SetSourceFileName(yypvt[-0].string);} break;
case 758:
#line 1897 "asmparse.y"
{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-4].int32; 
                                                                PENV->nExtCol=yypvt[-2].int32; PENV->nExtColEnd = yypvt[-0].int32; } break;
case 759:
#line 1900 "asmparse.y"
{ PENV->nExtLine = yypvt[-5].int32; PENV->nExtLineEnd = yypvt[-3].int32; 
                                                                PENV->nExtCol=yypvt[-1].int32; PENV->nExtColEnd = static_cast<unsigned>(-1);
                                                                PASM->SetSourceFileName(yypvt[-0].string);} break;
case 760:
#line 1904 "asmparse.y"
{ PENV->nExtLine = yypvt[-4].int32; PENV->nExtLineEnd = yypvt[-2].int32; 
                                                                PENV->nExtCol=yypvt[-0].int32; PENV->nExtColEnd = static_cast<unsigned>(-1); } break;
case 761:
#line 1907 "asmparse.y"
{ PENV->nExtLine = yypvt[-7].int32; PENV->nExtLineEnd = yypvt[-5].int32; 
                                                                PENV->nExtCol=yypvt[-3].int32; PENV->nExtColEnd = yypvt[-1].int32;
                                                                PASM->SetSourceFileName(yypvt[-0].string);} break;
case 762:
#line 1911 "asmparse.y"
{ PENV->nExtLine = yypvt[-6].int32; PENV->nExtLineEnd = yypvt[-4].int32; 
                                                                PENV->nExtCol=yypvt[-2].int32; PENV->nExtColEnd = yypvt[-0].int32; } break;
case 763:
#line 1913 "asmparse.y"
{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-1].int32 - 1;
                                                                PENV->nExtCol = 0; PENV->nExtColEnd = static_cast<unsigned>(-1);
                                                                PASM->SetSourceFileName(yypvt[-0].binstr);} break;
case 764:
#line 1920 "asmparse.y"
{ PASMM->AddFile(yypvt[-5].string, yypvt[-6].fileAttr|yypvt[-4].fileAttr|yypvt[-0].fileAttr, yypvt[-2].binstr); } break;
case 765:
#line 1921 "asmparse.y"
{ PASMM->AddFile(yypvt[-1].string, yypvt[-2].fileAttr|yypvt[-0].fileAttr, NULL); } break;
case 766:
#line 1924 "asmparse.y"
{ yyval.fileAttr = (CorFileFlags) 0; } break;
case 767:
#line 1925 "asmparse.y"
{ yyval.fileAttr = (CorFileFlags) (yypvt[-1].fileAttr | ffContainsNoMetaData); } break;
case 768:
#line 1928 "asmparse.y"
{ yyval.fileAttr = (CorFileFlags) 0; } break;
case 769:
#line 1929 "asmparse.y"
{ yyval.fileAttr = (CorFileFlags) 0x80000000; } break;
case 770:
#line 1932 "asmparse.y"
{ bParsingByteArray = TRUE; } break;
case 771:
#line 1935 "asmparse.y"
{ PASMM->StartAssembly(yypvt[-0].string, NULL, (DWORD)yypvt[-1].asmAttr, FALSE); } break;
case 772:
#line 1938 "asmparse.y"
{ yyval.asmAttr = (CorAssemblyFlags) 0; } break;
case 773:
#line 1939 "asmparse.y"
{ yyval.asmAttr = (CorAssemblyFlags) (yypvt[-1].asmAttr | afRetargetable); } break;
case 774:
#line 1940 "asmparse.y"
{ yyval.asmAttr = (CorAssemblyFlags) (yypvt[-1].asmAttr | afContentType_WindowsRuntime); } break;
case 775:
#line 1941 "asmparse.y"
{ yyval.asmAttr = (CorAssemblyFlags) (yypvt[-1].asmAttr | afPA_NoPlatform); } break;
case 776:
#line 1942 "asmparse.y"
{ yyval.asmAttr = yypvt[-2].asmAttr; } break;
case 777:
#line 1943 "asmparse.y"
{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_MSIL); } break;
case 778:
#line 1944 "asmparse.y"
{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_x86); } break;
case 779:
#line 1945 "asmparse.y"
{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_IA64); } break;
case 780:
#line 1946 "asmparse.y"
{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_AMD64); } break;
case 781:
#line 1947 "asmparse.y"
{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_ARM); } break;
case 784:
#line 1954 "asmparse.y"
{ PASMM->SetAssemblyHashAlg(yypvt[-0].int32); } break;
case 787:
#line 1959 "asmparse.y"
{ yyval.int32 = yypvt[-0].int32; } break;
case 788:
#line 1960 "asmparse.y"
{ yyval.int32 = 0xFFFF; } break;
case 789:
#line 1963 "asmparse.y"
{ PASMM->SetAssemblyPublicKey(yypvt[-1].binstr); } break;
case 790:
#line 1965 "asmparse.y"
{ PASMM->SetAssemblyVer((USHORT)yypvt[-6].int32, (USHORT)yypvt[-4].int32, (USHORT)yypvt[-2].int32, (USHORT)yypvt[-0].int32); } break;
case 791:
#line 1966 "asmparse.y"
{ yypvt[-0].binstr->appendInt8(0); PASMM->SetAssemblyLocale(yypvt[-0].binstr,TRUE); } break;
case 792:
#line 1967 "asmparse.y"
{ PASMM->SetAssemblyLocale(yypvt[-1].binstr,FALSE); } break;
case 795:
#line 1972 "asmparse.y"
{ bParsingByteArray = TRUE; } break;
case 796:
#line 1975 "asmparse.y"
{ bParsingByteArray = TRUE; } break;
case 797:
#line 1978 "asmparse.y"
{ bParsingByteArray = TRUE; } break;
case 798:
#line 1982 "asmparse.y"
{ PASMM->StartAssembly(yypvt[-0].string, NULL, yypvt[-1].asmAttr, TRUE); } break;
case 799:
#line 1984 "asmparse.y"
{ PASMM->StartAssembly(yypvt[-2].string, yypvt[-0].string, yypvt[-3].asmAttr, TRUE); } break;
case 802:
#line 1991 "asmparse.y"
{ PASMM->SetAssemblyHashBlob(yypvt[-1].binstr); } break;
case 804:
#line 1993 "asmparse.y"
{ PASMM->SetAssemblyPublicKeyToken(yypvt[-1].binstr); } break;
case 805:
#line 1994 "asmparse.y"
{ PASMM->SetAssemblyAutodetect(); } break;
case 806:
#line 1997 "asmparse.y"
{ PASMM->StartComType(yypvt[-0].string, yypvt[-1].exptAttr);} break;
case 807:
#line 2000 "asmparse.y"
{ PASMM->StartComType(yypvt[-0].string, yypvt[-1].exptAttr); } break;
case 808:
#line 2003 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) 0; } break;
case 809:
#line 2004 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-1].exptAttr | tdNotPublic); } break;
case 810:
#line 2005 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-1].exptAttr | tdPublic); } break;
case 811:
#line 2006 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-1].exptAttr | tdForwarder); } break;
case 812:
#line 2007 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedPublic); } break;
case 813:
#line 2008 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedPrivate); } break;
case 814:
#line 2009 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedFamily); } break;
case 815:
#line 2010 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedAssembly); } break;
case 816:
#line 2011 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedFamANDAssem); } break;
case 817:
#line 2012 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedFamORAssem); } break;
case 820:
#line 2019 "asmparse.y"
{ PASMM->SetComTypeFile(yypvt[-0].string); } break;
case 821:
#line 2020 "asmparse.y"
{ PASMM->SetComTypeComType(yypvt[-0].string); } break;
case 822:
#line 2021 "asmparse.y"
{ PASMM->SetComTypeAsmRef(yypvt[-0].string); } break;
case 823:
#line 2022 "asmparse.y"
{ if(!PASMM->SetComTypeImplementationTok(yypvt[-1].int32))
                                                                  PASM->report->error("Invalid implementation of exported type\n"); } break;
case 824:
#line 2024 "asmparse.y"
{ if(!PASMM->SetComTypeClassTok(yypvt[-0].int32))
                                                                  PASM->report->error("Invalid TypeDefID of exported type\n"); } break;
case 827:
#line 2030 "asmparse.y"
{ PASMM->StartManifestRes(yypvt[-0].string, yypvt[-0].string, yypvt[-1].manresAttr); } break;
case 828:
#line 2032 "asmparse.y"
{ PASMM->StartManifestRes(yypvt[-2].string, yypvt[-0].string, yypvt[-3].manresAttr); } break;
case 829:
#line 2035 "asmparse.y"
{ yyval.manresAttr = (CorManifestResourceFlags) 0; } break;
case 830:
#line 2036 "asmparse.y"
{ yyval.manresAttr = (CorManifestResourceFlags) (yypvt[-1].manresAttr | mrPublic); } break;
case 831:
#line 2037 "asmparse.y"
{ yyval.manresAttr = (CorManifestResourceFlags) (yypvt[-1].manresAttr | mrPrivate); } break;
case 834:
#line 2044 "asmparse.y"
{ PASMM->SetManifestResFile(yypvt[-2].string, (ULONG)yypvt[-0].int32); } break;
case 835:
#line 2045 "asmparse.y"
{ PASMM->SetManifestResAsmRef(yypvt[-0].string); } break;/* End of actions */
#line 329 "O:\\tfs\\cgm\\src\\Tools\\devdiv\\amd64\\yypars.c"
			}
		}
		goto yystack;  /* stack new state and value */
	}
#pragma warning(default:102)


#ifdef YYDUMP
YYLOCAL void YYNEAR YYPASCAL yydumpinfo(void)
{
	short stackindex;
	short valindex;

	//dump yys
	printf("short yys[%d] {\n", YYMAXDEPTH);
	for (stackindex = 0; stackindex < YYMAXDEPTH; stackindex++){
		if (stackindex)
			printf(", %s", stackindex % 10 ? "\0" : "\n");
		printf("%6d", yys[stackindex]);
		}
	printf("\n};\n");

	//dump yyv
	printf("YYSTYPE yyv[%d] {\n", YYMAXDEPTH);
	for (valindex = 0; valindex < YYMAXDEPTH; valindex++){
		if (valindex)
			printf(", %s", valindex % 5 ? "\0" : "\n");
		printf("%#*x", 3+sizeof(YYSTYPE), yyv[valindex]);
		}
	printf("\n};\n");
	}
#endif
